OpenCode: Extraindo 100% — Guia Definitivo para Full Stack Developers
Baixar PDFGuia completo do OpenCode: TUI, agents, permissões granulares, MCP, LSP integrado (30+ linguagens), skills, commands customizados, SDK TypeScript, 75+ providers e como integrar no workflow full stack. Open source, gratuito, BYOK.
OpenCode é a alternativa open source (MIT) ao Claude Code. Escrito em Go, suporta 75+ providers de IA, tem 30+ LSP servers integrados, sistema de permissões granulares, SDK TypeScript e custa zero (você traz suas próprias chaves de API). Para um full stack developer que quer flexibilidade total sem travar em um vendor, é a melhor opção.
1. Instalação
# macOS / Linux (recomendado)
curl -fsSL https://opencode.ai/install | bash
# npm
npm install -g opencode-ai
# Homebrew
brew install anomalyco/tap/opencode
# Arch
sudo pacman -S opencode
# Windows (Chocolatey)
choco install opencode
# Windows (Scoop)
scoop install opencode
# Docker
docker run -it --rm ghcr.io/anomalyco/opencode
# mise
mise use -g github:anomalyco/opencode
# Verificar
opencode --version2. Comandos CLI
Principais
# TUI interativo
opencode
# Non-interactive (print mode)
opencode run "corrija os erros de lint"
opencode run "implemente POST /api/users" --output-format json
# Servidor headless (API HTTP)
opencode serve --port 8080
# Interface web
opencode web --port 3000
# Anexar a servidor rodando
opencode attach http://localhost:8080Sessões
opencode session list # Listar sessões
opencode session delete <id> # Deletar sessão
opencode --continue # Continuar última sessão
opencode --session <id> "continue" # Resumir sessão específica
opencode --fork # Fork ao continuarAutenticação
opencode auth login # Login interativo
opencode auth logout # Logout
opencode auth list # Listar credenciaisAgents
opencode agent create # Criar agent customizado
opencode agent list # Listar agentsMCP
opencode mcp add <name> <command> # Adicionar MCP server
opencode mcp list # Listar MCP servers
opencode mcp auth <name> # Autenticar MCP (OAuth)
opencode mcp debug <name> # Debug MCP connectionUtilitários
opencode models # Listar models disponíveis
opencode models anthropic # Listar models de um provider
opencode stats # Estatísticas de uso (tokens, custo)
opencode export # Exportar sessões
opencode import <file> # Importar sessões
opencode github install # Instalar GitHub agent
opencode github run # Rodar GitHub agent
opencode pr 123 # Fetch + checkout PR, depois rodar
opencode acp # Iniciar servidor ACP
opencode plugin <module> # Instalar plugin
opencode db "SELECT * FROM sessions" # Query do banco interno
opencode debug # Ferramentas de debug
opencode uninstall # Remover completamente
opencode upgrade # Atualizar3. Flags que importam
# Modo e modelo
opencode --model anthropic/claude-sonnet-4-20250514 "tarefa"
opencode --agent build "tarefa" # Usar agent específico
opencode --variant high "tarefa" # Reasoning effort
opencode --thinking # Mostrar thinking blocks
# Permissões
opencode --dangerously-skip-permissions # Auto-aprovar tudo
# Output
opencode run "liste endpoints" --output-format json
opencode run "gere docs" --format json # Raw JSON events
# Configuração
opencode --cwd /path/to/project # Diretório de trabalho
opencode --pure # Sem plugins externos
opencode --session <id> --fork # Fork sessão
# Servidor
opencode serve --port 8080 --hostname 0.0.0.0
opencode web --port 3000 --mdns # Descoberta na rede local
# Debug
opencode --debug # Modo debug
opencode --print-logs # Logs no stderr
opencode --log-level DEBUG # Nível de log4. Configuração (opencode.json)
Localização (precedência)
1. Remote config → .well-known/opencode (org defaults)
2. Managed → /Library/Application Support/opencode/ (MDM)
3. macOS prefs → .mobileconfig (highest for enterprise)
4. Global → ~/.config/opencode/opencode.json
5. Custom env → OPENCODE_CONFIG=/path/to/config.json
6. Project → ./opencode.json (project root)
7. .opencode/ → agents, commands, plugins
8. Inline env → OPENCODE_CONFIG_CONTENT='{"model":"..."}'Config completo
{
"model": "anthropic/claude-sonnet-4-20250514",
"small_model": "anthropic/claude-haiku-3-5",
"default_agent": "build",
"provider": {
"anthropic": {
"timeout": 120000,
"chunkTimeout": 30000
}
},
"permission": {
"read": "allow",
"edit": "allow",
"bash": {
"*": "ask",
"pnpm *": "allow",
"git *": "allow",
"rm *": "deny"
},
"glob": "allow",
"grep": "allow",
"webfetch": "allow",
"todowrite": "allow",
"doom_loop": "ask",
"external_directory": "ask"
},
"tools": {
"bash": true,
"edit": true,
"read": true,
"write": true,
"glob": true,
"grep": true,
"webfetch": true,
"websearch": true,
"todowrite": true,
"question": true
},
"mcp": {
"filesystem": {
"type": "local",
"command": ["npx", "@modelcontextprotocol/server-filesystem", "."]
},
"github": {
"type": "remote",
"url": "https://mcp.github.com",
"headers": { "Authorization": "Bearer ghp_..." }
}
},
"lsp": true,
"instructions": [
"CLAUDE.md",
".opencode/instructions/*.md",
"https://raw.githubusercontent.com/org/repo/main/AGENTS.md"
],
"share": "manual",
"snapshot": true,
"autoupdate": true,
"compaction": "auto",
"watcher": {
"ignore": ["node_modules/**", ".next/**", "dist/**"]
},
"plugin": ["@opencode/plugin-prettier"],
"shell": {
"path": "/bin/zsh",
"args": ["-l"]
},
"formatter": {
"command": "prettier",
"args": ["--write", "$FILE"]
},
"experimental": {
"lsp_tool": true,
"plan_mode": true
}
}Substituição de variáveis
{
"provider": {
"anthropic": {
"apiKey": "{env:ANTHROPIC_API_KEY}"
}
},
"instructions": [
"{file:docs/conventions.md}",
"{file:specs/current-sprint.md}"
]
}5. Agents — sistema completo
Agents built-in
| Agent | Modo | Descrição |
|---|---|---|
| build | primary | Default, todas as tools habilitadas |
| plan | primary | Restrito, edit/bash em "ask" |
| general | subagent | General-purpose, full access |
| explore | subagent | Read-only, busca rápida |
| scout | subagent | Read-only, pesquisa externa |
| compaction | hidden | Gerencia compactação de contexto |
| title | hidden | Gera títulos de sessão |
| summary | hidden | Gera resumos |
Agent customizado
{
"agent": {
"reviewer": {
"description": "Reviews code for security and quality",
"prompt": "You are a senior code reviewer. Focus on security, performance, and type safety.",
"model": "anthropic/claude-opus-4-7-20250514",
"temperature": 0.1,
"mode": "subagent",
"permission": {
"read": "allow",
"edit": "deny",
"bash": {
"*": "deny",
"pnpm lint *": "allow",
"pnpm vitest *": "allow"
},
"glob": "allow",
"grep": "allow"
},
"hidden": false,
"color": "red"
}
}
}6. Permissões granulares
3 ações
| Ação | Efeito |
|---|---|
allow | Executa sem perguntar |
ask | Pergunta ao usuário |
deny | Bloqueia completamente |
Sintaxe granular
{
"permission": {
"bash": {
"*": "ask", // default: perguntar
"pnpm *": "allow", // pnpm: auto
"git *": "allow", // git: auto
"npm install *": "ask", // install: perguntar
"rm *": "deny", // rm: bloquear
"curl *": "deny" // curl: bloquear
}
}
}Defaults de segurança
{
"permission": {
"read": "allow",
"edit": "allow",
"bash": "allow",
"doom_loop": "ask", // prevenção de loop infinito
"external_directory": "ask" // acesso a diretório externo
}
}
// .env* files: deny por default7. LSP integrado — 30+ linguagens
OpenCode tem 30+ LSP servers integrados que rodam automaticamente:
| Linguagem | LSP Server |
|---|---|
| Go | gopls |
| TypeScript | typescript-language-server |
| Python | pyright |
| Rust | rust-analyzer |
| C/C++ | clangd |
| Java | jdtls |
| Ruby | solargraph |
| PHP | intelephense |
| Zig | zls |
| Lua | lua-language-server |
| Elixir | lexical |
| Haskell | haskell-language-server |
| OCaml | ocamllsp |
| Kotlin | kotlin-language-server |
| Swift | sourcekit-lsp |
| Dart | dart-language-server |
| R | r-languageserver |
| SQL | sql-language-server |
| HTML/CSS | vscode-html-language-server |
| JSON | vscode-json-language-server |
| YAML | yaml-language-server |
| Dockerfile | dockerfile-language-server |
| Terraform | terraform-ls |
| Nix | nil |
| TOML | taplo |
| Markdown | marksman |
| Protobuf | bufls |
| Gleam | gleam |
Ativar LSP tool (experimental)
OPENCODE_EXPERIMENTAL_LSP_TOOL=1 opencode{
"experimental": {
"lsp_tool": true
}
}8. Skills
Localização
.opencode/skills/<name>/SKILL.md
~/.config/opencode/skills/<name>/SKILL.md
.claude/skills/<name>/SKILL.md # Compatível
.agents/skills/<name>/SKILL.md # CompatívelSKILL.md com frontmatter
---
name: commit
description: "Conventional commit with pre-checks"
license: MIT
metadata:
author: "Kaique"
version: "1.0.0"
---
## Trigger
When the user says "commit", "/commit", or stages changes.
## Steps
1. git status && git diff --cached
2. Analyze changes and draft Conventional Commit message
3. Run: pnpm lint:fix && pnpm vitest run
4. If green, commit. If red, fix and retry.9. Commands customizados
Localização
.opencode/commands/review.md
~/.config/opencode/commands/deploy.mdCommand com argumentos
<!-- .opencode/commands/review.md -->
# Review PR
Review PR #$ARGUMENTS for security, correctness, and code quality.
Steps:
1. opencode pr $ARGUMENTS
2. Read the diff
3. Check against .cursor/rules/global.md
4. Output issues as: FILE:LINE — description — severityCommand com output de shell
<!-- .opencode/commands/status.md -->
# Project Status
Current branch: !`git branch --show-current`
Last commit: !`git log -1 --oneline`
Test status: !`pnpm vitest run --reporter=json 2>/dev/null | jq '.numPassedTests'`10. SDK TypeScript
Instalação
npm install @opencode-ai/sdkUso
import { OpenCode } from '@opencode-ai/sdk';
const client = new OpenCode({
baseUrl: 'http://localhost:8080'
});
// Criar sessão
const session = await client.sessions.create({
model: 'anthropic/claude-sonnet-4-20250514'
});
// Enviar mensagem e receber resposta em streaming
const stream = client.sessions.prompt(session.id, {
message: 'Read src/api/users.ts and generate tests'
});
for await (const event of stream) {
if (event.type === 'content') {
process.stdout.write(event.text);
}
}11. Variáveis de ambiente
# Configuração
OPENCODE_CONFIG=/path/to/config.json
OPENCODE_CONFIG_DIR=/path/to/config/dir
OPENCODE_CONFIG_CONTENT='{"model":"anthropic/claude-sonnet-4"}'
# Auto-update
OPENCODE_DISABLE_AUTOUPDATE=1
# Claude Code compat
OPENCODE_DISABLE_CLAUDE_CODE=1
# Web search (Exa AI)
OPENCODE_ENABLE_EXA=1
# Servidor
OPENCODE_SERVER_PASSWORD=minha-senha
# Experimental
OPENCODE_EXPERIMENTAL=1
OPENCODE_EXPERIMENTAL_LSP_TOOL=1
OPENCODE_EXPERIMENTAL_PLAN_MODE=1
# Debug
OPENCODE_DEBUG=112. Comparação final
| Feature | OpenCode | Claude Code | Cursor |
|---|---|---|---|
| Open Source | MIT ✅ | ❌ | ❌ |
| Preço | Grátis (BYOK) | Subscription/API | Free/Pro/Business |
| Providers | 75+ | Claude only | Múltiplos |
| LSP integrado | 30+ ✅ | ❌ | Via VS Code |
| Permissões | Granular (allow/ask/deny) | Granular | Trust-based |
| SDK | TypeScript ✅ | Python + TS | ❌ |
| Sharing | Built-in links | ❌ | ❌ |
| Remote Control | Web + TUI | Phone/browser | ❌ |
| Agents | 5 built-in + custom | Custom | Background |
| Hooks | Via plugins | 29+ events | Limitado |
| Skills | SKILL.md ✅ | SKILL.md ✅ | ❌ |
13. Checklist: setup completo
# 1. Instalar
curl -fsSL https://opencode.ai/install | bash
# 2. Login
opencode auth login
# 3. Criar config
cat > opencode.json << 'EOF'
{
"model": "anthropic/claude-sonnet-4-20250514",
"permission": {
"bash": { "*": "ask", "pnpm *": "allow", "git *": "allow" }
},
"lsp": true,
"instructions": ["CLAUDE.md"]
}
EOF
# 4. Criar AGENTS.md (equivalente ao CLAUDE.md)
opencode # e digite /init
# 5. Criar rules
mkdir -p .opencode/skills/commit
cat > .opencode/skills/commit/SKILL.md << 'EOF'
---
name: commit
description: "Conventional commit"
---
## Steps: git status → draft → lint+test → commit
EOF
# 6. MCP (opcional)
opencode mcp add filesystem npx @modelcontextprotocol/server-filesystem .
# 7. Testar
opencode run "Read AGENTS.md and summarize the project"Cursor: Extraindo 100% — Guia Definitivo para Full Stack Developers
Guia completo do Cursor IDE: Composer 2, cloud agents, rules (.cursorrules e .cursor/rules/), MCP, @-mentions, background agents, keyboard shortcuts e integração no workflow full stack.
Claude Code em Profundidade — Do Terminal à Produção
Guia completo do Claude Code: terminal, IDE, desktop, cloud agents. Configuração avançada, slash commands, Plan-Then-Execute e padrões de uso real.