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 0input/output(‘deepseek−v4.1−flash−free‘,‘glm−5.3−flash−free‘,‘big−pickle‘,thevisionmodel‘nemotron−3.5−super−vl−free‘,andmore).Run‘opencodemodels‘intheterminalor‘/models‘intheTUItoseethefulllist.PaidmodelsswitchinthesameUI;referenceprices:DeepSeekV4.1Flash‘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‘,ClaudeSonnet5.5‘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:

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):

# 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:

{
  "$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

ModelSizeBest for
qwen3-vl:8b6.2 GBImages and OCR, runs on 16 GB RAM
qwen3-coder:30b18.6 GBEveryday coding, 32 GB RAM recommended
qwen3.6-35b-a3b22.1 GBMoE with 3B active, fast
qwen3.5:35b22 GBMore 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.

{
  "$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:

SituationUseWhy
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 bugsplaywrightClean browser environment, replayable steps
Console errors, Network, performance, memorychrome-devtoolsDevTools-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:

---
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.

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

Author

Mark Ku

10 年以上的軟體工程師,做過北美電商與 AI SaaS 訂閱收費系統。Read More

Found this useful?

The author's free tools, daily podcasts and newsletter are all here.

Mark Ku · This article is licensed under CC BY 4.0. Credit the author and link back to the original when reusing it.

Comments

Subscribe to Newsletter

Subscribe to get new posts delivered instantly — never miss a tech share.

By submitting, you agree to receive emails. You can anytime.

Popular Posts

View all
Mark Ku
··633

Oracle Cloud Always Free Tier: Linux Host and Static IP for a $0 Cloud Solution

Oracle Cloud Always Free Tier: Linux Host and Static IP for a $0 Cloud Solution
Mark Ku
··464

Say Goodbye to Postman's Fee Trap! A Hands-on Guide to Bruno, the Open-Source Git-Native API Testing Powerhouse.

Say Goodbye to Postman's Fee Trap! A Hands-on Guide to Bruno, the Open-Source Git-Native API Testing Powerhouse.
Mark Ku
··249

A Free, Open-Source, Notion-like Knowledge Base — A Complete Guide to Deploying and Backing Up Outline Wiki

A Free, Open-Source, Notion-like Knowledge Base — A Complete Guide to Deploying and Backing Up Outline Wiki
Mark Ku
··205

Building an Efficient API Management Platform: Deploying Kong Gateway from Scratch - Part 1

Building an Efficient API Management Platform: Deploying Kong Gateway from Scratch - Part 1
Mark Ku
··202

Setting Up Samba on Ubuntu to Share Folders with Windows 11

Setting Up Samba on Ubuntu to Share Folders with Windows 11
Mark Ku
··198

Training Your Own AI Voice: Hardware Requirements, Open-Source Model Comparison, and LoRA Fine-Tuning

Training Your Own AI Voice: Hardware Requirements, Open-Source Model Comparison, and LoRA Fine-Tuning