---
title: "Using OpenCode to handle free cloud models, local Ollama, MCP and Skill in one go: my hands-on guide to avoiding pitfalls"
description: "Firsthand OpenCode test: free cloud models, local Ollama integration, MCP document queries and browser debugging, project-level Skill setup, one tool handles the entire AI-assisted development workflow."
canonical_url: "https://blog.markkulab.net/en/post/opencode-cloud-free-models-ollama-mcp-skill-pitfall-guide"
author: "Mark Ku"
author_url: "https://blog.markkulab.net/en/author/mark-ku"
site: "Mark Ku's Tech Notes"
date_published: "2026-11-07T02:40:45.000Z"
category: "AI"
tags: ["OpenCode", "AI Agent", "MCP", "Ollama", "免費模型"]
language: "en"
license: "CC BY 4.0"
license_url: "https://creativecommons.org/licenses/by/4.0/"
attribution: "when reusing or quoting, credit the author and link back to the original"
---

# Using OpenCode to handle free cloud models, local Ollama, MCP and Skill in one go: my hands-on guide to avoiding pitfalls

## Introduction: Why Did I Switch AI Coding Tools Again?

Over the past few years I've cycled through AI coding tools one after another, and every one of them does its own thing: model switching, MCP setup and project prompts are scattered across different places, and a new machine means configuring everything again. What I actually want is simple: **an open-source, model-agnostic CLI/desktop agent whose config travels with the repo**, able to use free cloud models, paid models and local Ollama, plus MCP and project-level Skills.

OpenCode is exactly that. The same `opencode.json` works at the office, on my home desktop and inside an intranet. Costs stay controllable, privacy stays manageable, and new team members just clone the repo and run `opencode`. This post collects my current setup, the pitfalls I hit, and a recommended starter config for engineers still on the fence.

## Core Strengths: One Tool for Every Model and Ecosystem

OpenCode's biggest selling point is that it is an aggregator, not tied to any single model vendor:

*   **Model aggregation**: there are currently about 13 models with $0 input/output (`deepseek-v4.1-flash-free`, `glm-5.3-flash-free`, `big-pickle`, the vision model `nemotron-3.5-super-vl-free`, and more). Run `opencode models` in the terminal or `/models` in the TUI to see the full list. Paid models switch in the same UI; reference prices: DeepSeek V4.1 Flash `$0.30/$1.20`, Claude Sonnet 5.5 `$2/$10` (per 1M tokens).
*   **Local models**: point `opencode.json` at Ollama on your network and pick models by use case: `qwen3-vl:8b` for images and OCR, `qwen3-coder:30b` for everyday coding, and the MoE `qwen3.6-35b-a3b`, which activates only 3B parameters and is fast.
*   **Native MCP support**: Context7, the three browser MCPs and GitHub go straight into the config file, no wrapper needed.
*   **Skills**: skills live under the project's `.opencode/skills/` and travel with the repo, so debugging flow, TDD habits and React best practices stay consistent across the team.

## Hands-on Setup: From Install to First Task

### Install and Launch

The simplest way is the official install script, or a global npm install:

```bash
curl -fsSL https://opencode.ai/install | bash
# or
npm install -g opencode-ai
```

You can also download the desktop app. Run `opencode` to enter the TUI and type `/models` to confirm the model list loads.

### Free Cloud Models

I usually start with `deepseek-v4.1-flash-free` for everyday coding tasks. It responds quickly and is great for prototypes and side projects. A few things to know first:

*   **Free for a limited time**: models can be pulled at any moment, so don't treat them as permanent.
*   **Rate limited, but the numbers aren't published**: you will notice slowdowns at peak hours.
*   **Only usable inside OpenCode**: the free chat models can't be fed to other clients via an API key; you need to sign in to the OpenCode Console or set `OPENCODE_API_KEY`.
*   **Mind your privacy**: the NVIDIA models explicitly say not to send confidential data, while DeepSeek, GLM and Beam have zero retention.

### Connecting Local Ollama, Step by Step

This is where I spent the most time tuning. The pitfalls are mainly context length and cross-host connections.

**1. Server-side launch parameters (required):**

```bash
# Raise context to 32K and allow connections from other hosts
OLLAMA_CONTEXT_LENGTH=32768 \
OLLAMA_HOST=0.0.0.0:11434 \
ollama serve
```

> 💡 **Key reminder**: Ollama's default context is often only 4K to 8K, so the model "suddenly forgets" halfway through and tool calls fail easily. The official docs also suggest raising context to 16K to 32K when tool calls misbehave. For cross-host access, open port 11434 in the firewall.

**2. Client-side `opencode.json`:**

Ollama exposes an OpenAI-compatible API, so the provider uses `@ai-sdk/openai-compatible`, and `baseURL` must end with `/v1`:

```json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama (LAN)",
      "options": {
        "baseURL": "http://192.168.1.100:11434/v1"
      },
      "models": {
        "qwen3-coder:30b": { "name": "Qwen3 Coder 30B" },
        "qwen3-vl:8b": { "name": "Qwen3 VL 8B" },
        "qwen3.6-35b-a3b": { "name": "Qwen3.6 35B A3B (MoE)" }
      }
    }
  },
  "model": "ollama/qwen3-coder:30b"
}
```

Replace `192.168.1.100` with your own Ollama host's IP, or use `localhost` on the same machine.

**3. Verify:** restart OpenCode; `/models` should list the local models. Give one a small task to confirm it works.

### Picking a Local Model

| Model | Size | Best for |
| :--- | :--- | :--- |
| `qwen3-vl:8b` | 6.2 GB | Images and OCR, runs on 16 GB RAM |
| `qwen3-coder:30b` | 18.6 GB | Everyday coding, 32 GB RAM recommended |
| `qwen3.6-35b-a3b` | 22.1 GB | MoE with 3B active, fast |
| `qwen3.5:35b` | 22 GB | More complex tasks |

## MCP and Skills: Turning the Agent into a Teammate Who Knows Your Project

### Installing MCP

MCP servers go in the `mcp` block of `opencode.json`: `type: "local"` launches a command on your machine, `type: "remote"` connects to a URL. If you'd rather not edit by hand, run `opencode mcp add` in the terminal and it walks you through it.

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "enabled": true
    },
    "playwright": {
      "type": "local",
      "command": ["npx", "-y", "@playwright/mcp@latest"],
      "enabled": true
    },
    "chrome-devtools": {
      "type": "local",
      "command": ["npx", "-y", "chrome-devtools-mcp@latest"],
      "enabled": true
    }
  }
}
```

### Three Browser MCPs, Three Jobs

I have three browser-related MCPs. They confused me at first, but once the split clicked everything went smoothly:

| Situation | Use | Why |
| :--- | :--- | :--- |
| Pages that need login (admin panels, mail, company systems) | browse (drives your signed-in Chrome) | Reuses the login state already in your browser |
| Writing E2E tests, reproducing bugs | playwright | Clean browser environment, replayable steps |
| Console errors, Network, performance, memory | chrome-devtools | DevTools-level information |

One line to remember: **browse for logins, playwright for tests, chrome-devtools for errors.**

### Context7: No More Made-up APIs

With Context7 installed, when the agent needs to use a library such as Next.js, Prisma or Tailwind, it pulls the latest official docs first instead of guessing parameters from memory. You really feel it with fast-moving frameworks.

### GitHub MCP: Needs a Token

GitHub MCP works with repos, issues, PRs and Actions, but you must set `GITHUB_PERSONAL_ACCESS_TOKEN` first. The first time I installed it the tool count was 0, simply because the token wasn't set.

### Skills: Writing Team Practices into Files

A skill is a folder with a `SKILL.md`, placed at `.opencode/skills/<name>/SKILL.md` in the project and versioned with the repo. OpenCode also reads `.claude/skills/`, so skills written for Claude Code can be shared as-is. For example, `.opencode/skills/debug/SKILL.md`:

```markdown
---
name: debug
description: Team standard debugging flow, use when hitting a bug
---

# Debugging Skill

When you hit a bug, follow these steps:

1.  **Read the logs first**: collect Console, server logs and stack traces.
2.  **Then hypothesize**: list 3 possible causes from the error, with confidence.
3.  **Then change code**: make the smallest fix for the most likely cause and verify it with a test.
4.  **Retrospective**: record the root cause and fix in the PR description.
```

When the agent hits a bug it follows this flow instead of randomly changing code. The same approach works for TDD, React best practices, test writing and more.

## Pitfalls and Limits: Free Doesn't Mean No Cost

*   **Free models can disappear any time**: don't tie an important workflow to a single free model; keep local or paid models as a fallback.
*   **The Ollama context trap**: the 4K to 8K default isn't enough, **always set `OLLAMA_CONTEXT_LENGTH=32768`**; for cross-host use set `OLLAMA_HOST=0.0.0.0:11434`.
*   **Local models need hardware**: 30B-class models want 32 GB of RAM or more; MoE models are fast, but paid models are still steadier for complex refactors.
*   **Privacy boundary**: don't send confidential code to free models that don't promise privacy; give those tasks to a local model.

## Conclusion: Who Is It For? My Recommended Starter Setup

### Good fit

*   Engineers who want to save on subscriptions or need intranet/offline development
*   Teams that want config in version control, "config as documentation"
*   People who enjoy building automated workflows with MCP and Skills

### Not a good fit

*   People who don't want to touch JSON config and prefer a fully managed UI
*   Teams deeply tied to another AI coding tool with no plan to switch soon

### Starter setup

1.  **Start with free models**: after installing, pick a free model such as `deepseek-v4.1-flash-free` in `/models` and try a few everyday tasks.
2.  **Connect local Ollama**: add the `provider` config above to `opencode.json` and raise context to 32K.
3.  **Install the basic three MCPs**: Context7, playwright, chrome-devtools.
4.  **Write your first Skill**: start with the process your team explains most often, such as debugging or code review.

If you're looking for a portable, extensible, vendor-neutral AI coding partner, OpenCode is well worth a try.

## References

*   [OpenCode official docs](https://opencode.ai/docs)
*   [From Copilot to Cursor to Claude: Auto-Extracting Knowledge Docs with Claude Code Hooks](https://blog.markkulab.net/post/ai-tools-sharing-claude-gemini)
*   [Advanced Claude Code: GitHub Web Development, Hook Knowledge Base, Remote Control and Common MCPs](https://blog.markkulab.net/post/claude-code-tips-and-tricks)
*   [Installing Ollama with Docker and Comparing CPU vs GPU Acceleration](https://blog.markkulab.net/post/build-your-ollama-ai-with-hardware-acceleration)
*   [Tools First, Then MCP, Then Agent: Building a Fully Local AI Assistant with Hermes Agent](https://blog.markkulab.net/post/hermes-agent-local-mcp-lora)
*   [Vibe Coding Experience Sharing](https://blog.markkulab.net/post/ai-dev-experience-sharing)

---

## About this article and its author

Originally published on [Mark Ku's Tech Notes](https://blog.markkulab.net/en/post/opencode-cloud-free-models-ollama-mcp-skill-pitfall-guide)

License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) — when reusing or quoting, credit the author and link back to the original

### About the author

**[Mark Ku](https://blog.markkulab.net/en/author/mark-ku)** — Software engineer

- 10+ years as a software engineer
- Built North-American e-commerce and AI SaaS subscription billing

### Free tools built by the author

All of these are free to use:

- [Free PDF Sign Tool](https://blog.markkulab.net/en/tools/pdf-sign): Online PDF sign tool — draw, type, or upload a signature, then drag, resize, and download. Everything runs in your browser; nothing is uploaded.
- [VS Code Refactory](https://blog.markkulab.net/en/tools/refactory): Refactory is a VS Code refactoring extension: 34 actions plus a 37-rule code-smell inspection layer with a Code Health dashboard, across 18 languages, backed by 534 tests. It learns your repo's conventions: where interfaces live, where DI is registered, whether 'use client' belongs. It ranks files by git churn × complexity so you know what to fix first, and hands any smell to the Claude Code already on your machine. Free to use, and your source never leaves your computer.
- [DB-Kit Database Manager](https://blog.markkulab.net/en/tools/db-kit): DB-Kit is a lightweight, cross-platform database manager built with Tauri + Rust + React. Manage MySQL, MariaDB, PostgreSQL, SQL Server, Oracle, SQLite, MongoDB, Redis, Kafka, Elasticsearch and RabbitMQ from one consistent interface: passwords encrypted in the OS keychain, SSH tunnels, full CRUD, a visual query builder, stacked multi-statement result sets, cross-connection data transfer, schema & data compare with sync SQL and schema snapshots, Excel / CSV import & export, visualized execution plans, ER diagrams, scheduled backups, SQL stress testing with p50–p99 latency percentiles, a 15-rule SQL review engine, Review & Run (AI review plus per-statement backups and an auto-generated rollback script), Kafka message browsing with monitoring & alerts, an SSH terminal with SFTP / FTP, Docker / Kubernetes, remote desktop (RDP / VNC / RustDesk), file / folder compare, stored procedure integration tests, six UI languages, a built-in AI assistant (a local CLI or any Anthropic / OpenAI-compatible API; natural-language SQL, AI review and tuning advice) and the dbk CLI. Free and open source (MIT), with installers for Windows, macOS and Linux.
- [VS Code Super Mermaid](https://blog.markkulab.net/en/tools/super-mermaid): Super Mermaid is a VS Code extension for beautiful Mermaid diagrams out of the box: auto-colored live preview, mouse pan & zoom, high-res PNG / SVG export, 21 templates and multiple themes. Free and open source (MIT).
- [React Super Mermaid](https://blog.markkulab.net/en/tools/react-super-mermaid): react-super-mermaid is an open-source React component library: render beautiful Mermaid diagrams with a single <MermaidViewer>, with built-in colorful / sketch themes, pan & zoom, in-diagram search, and high-res SVG / PNG export. Lightweight, SSR-safe, fully typed. Free and open source (MIT).
- [Jira / Confluence Super Mermaid](https://blog.markkulab.net/en/tools/jira-super-mermaid): An Atlassian Forge app: write Mermaid syntax directly inside a Jira issue or a Confluence page and get flowcharts, sequence diagrams, state machines and Gantt charts. 11 diagram types, SVG / PNG export, light and dark themes, full CJK support. Runs on Atlassian: your diagrams live in your own site and the app calls no third-party service. Free, coming soon to the Atlassian Marketplace.
- [Mermaid Live Preview](https://blog.markkulab.net/en/tools/mermaid-preview): Write Mermaid in your browser, see it render instantly, and share the whole diagram as a single link. No sign-up, nothing uploaded to a server, and mermaid.live share links work as-is.
- [React Intl Phone Number](https://blog.markkulab.net/en/tools/react-intl-phone-number): react-intl-phone-number is an open-source React component: framework-agnostic and antd-free, with E.164 in/out, a searchable flag / country-code dropdown, configurable validation levels (strict / mobile-strict / loose), themeable CSS, and i18n — phone logic powered by google-libphonenumber. Lightweight and fully typed. Free and open source (MIT).
- [Uptime Kuma Cluster](https://blog.markkulab.net/en/tools/uptime-kuma-cluster): Turn single-node Uptime Kuma into a highly available cluster: OpenResty + Lua smart load balancing, shared MariaDB state, health checks and automatic failover, plus cluster-management REST APIs. One Docker Compose command to start. Free and open source (MIT).
- [AI Podcast Cut](https://blog.markkulab.net/en/tools/ai-podcast-cut): Drop in a recording and it removes fillers and stutters, levels loudness segment by segment, and sends a second agent to review every cut. Cut points snap to word boundaries and zero crossings, every splice gets a fade, and sentence-end breaths are preserved. Desktop app for Windows, macOS and Linux. MIT licensed; the Windows installer bundles ffmpeg.
- [AI Video Cut](https://blog.markkulab.net/en/tools/ai-video-cut): Pick something in your video: type it (face, license plate, phone screen, logo), click points or drag a box, or let Claude Code / Codex pick it. AI Video Cut tracks it frame by frame, then mosaics or blurs it, recolors it, pins stickers and text to it, swaps a screen or poster for your own image or video, or removes it using background that other frames actually captured. Plus sequence editing, local captions and an AI assistant. Free, open-source (MIT) Windows desktop app (macOS / Linux experimental) that runs locally, nothing uploaded.
- [open-pos restaurant POS](https://blog.markkulab.net/en/tools/open-pos): One computer and one receipt printer is enough to open the shop. Your data lives on your own disk, no subscription, no lock-in, MIT licensed. Money is integer New Taiwan dollars with tax split by the statutory formula, so sales + tax always equals the total. Printing goes straight over ESC/POS on TCP 9100, with no vendor driver. Tauri + Rust + SQLite desktop app, v1.0 in development.
- [.NET e-commerce API template](https://blog.markkulab.net/en/tools/dotnet-ecommerce-api): An e-commerce backend API template built on .NET 10: Controller → Service → Repository layering, Autofac convention-based registration, SqlSugar for MySQL / MariaDB and SQL Server, Redis cache and message queue, Hangfire jobs, JWT auth, and an extensible payment provider module (ECPay, Newebpay). Apache 2.0.
- [Open Token Monitor team AI usage](https://blog.markkulab.net/en/tools/open-token-monitor): Collect token usage and equivalent cost from every employee's AI coding tools into a hub you host yourself: PostgreSQL, org roster, dashboards compared by company and department, and a reports API. Electron and Rust/Tauri clients upload every 30 minutes. MIT licensed, one Docker command.
- [ai-security-monitor defensive security](https://blog.markkulab.net/en/tools/ai-security-monitor): Your website is live. Who checks its certificates, security settings and known vulnerabilities? A self-hosted Security Hub brings website scans and host monitoring together, deduplicates findings and compares scans after fixes.

### Daily podcasts

- [Mark's Tech Insights — Daily AI News](https://blog.markkulab.net/en/category/tech-news): Daily curated AI and tech trends. Catch the latest developments via audio summaries — covering AI applications, software architecture, DevOps, and engineering practice. — RSS: https://blog.markkulab.net/feed.xml
- [AI股市蝦聊](https://blog.markkulab.net/en/category/ai-stock-chat): Every trading day, an AI-analyzed take on the Taiwan stock market, delivered as a two-host conversation covering the session and the next-day outlook. — RSS: https://blog.markkulab.net/ai-stock-chat/feed.xml
- [開源好物日報](https://blog.markkulab.net/en/category/open-source-weekly): A daily two-host pick of free open-source tools surfaced from real Hacker News, GitHub, and Reddit buzz — what pain they solve and the fastest way to get started. — RSS: https://blog.markkulab.net/open-source-weekly/feed.xml
- [AI 運動日報](https://blog.markkulab.net/en/category/sports-weekly): Two hosts talk NBA, MLB and world sport every day — scores, records and the stories behind them, from a Taiwanese fan perspective. — RSS: https://blog.markkulab.net/sports-weekly/feed.xml
- [AI 國際新聞快報](https://blog.markkulab.net/en/category/world-news): A daily two-host briefing that makes sense of the past 24 hours in world news — geopolitics, the global economy, conflict and security, disasters and climate — from a Taiwanese perspective, neutral and fully sourced. — RSS: https://blog.markkulab.net/world-news/feed.xml
- [地端 AI 實驗室](https://blog.markkulab.net/en/category/local-ai-lab): Every day, a two-host look at open-weight models and LoRAs you can actually run on your own machine: what they are for, whether your GPU can handle them, and how they compare — sourced from official model cards. — RSS: https://blog.markkulab.net/local-ai-lab/feed.xml
- [AI 行銷日報](https://blog.markkulab.net/en/category/ai-marketing): Every day, two hosts break down the latest in AI for marketing, advertising, SEO/GEO and content marketing: practical, never sponsored, every story sourced. — RSS: https://blog.markkulab.net/ai-marketing/feed.xml
- [AI 資安日報](https://blog.markkulab.net/en/category/ai-security): Every day, two hosts cover the latest where AI meets cybersecurity: LLM and AI agent vulnerabilities, prompt injection, model supply-chain risks and AI-powered attacks, from a defense-first angle with every story sourced. — RSS: https://blog.markkulab.net/ai-security/feed.xml

### Newsletter

[Subscribe to the newsletter](https://blog.markkulab.net/en/subscribe) — Be the first to know about new posts. No spam, unsubscribe anytime.
