- Update AGENTS.md header with current commit (366af12) and date (2026-01-13) - Add beads, n8n, opencode to README.md Available Packages table - Update docs/README.md packages list - Create docs/packages/beads.md (220 lines) - Create docs/packages/n8n.md (310 lines) - Create docs/packages/opencode.md (346 lines) Documentation now reflects commitbc75505which added these three packages.
8.1 KiB
8.1 KiB
opencode
AI coding agent built for the terminal that can build anything. Combines a TypeScript/JavaScript core with a Go-based TUI for an interactive AI coding experience.
Description
OpenCode is a terminal-based AI coding agent designed for power users. It provides a comprehensive development environment with AI assistance, code generation, refactoring, and project management capabilities. The tool features a sophisticated TUI (Terminal User Interface) built with Go, while the core functionality is implemented in TypeScript/JavaScript.
Features
- 🤖 AI-Powered Coding: Generate, refactor, and optimize code with AI assistance
- 🖥️ Modern TUI: Beautiful terminal interface built with Go
- 🔍 Code Understanding: Parse and understand existing codebases
- 🌳 Tree-Sitter Integration: Accurate syntax highlighting and code structure analysis
- 📁 Project Management: Navigate and manage projects efficiently
- 🧠 Multi-LLM Support: Works with various language models (OpenAI, Anthropic, etc.)
- 📝 Code Generation: Create new files and features from natural language
- 🔄 Refactoring: Intelligent code refactoring with AI
- 🐛 Bug Detection: Find and fix bugs automatically
- 📚 Context Awareness: Maintains context across editing sessions
- 🎯 Task Orchestration: Break down and execute complex tasks
- 💾 Local Development: Runs entirely on your machine
Installation
Via Overlay
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
opencode
];
}
Direct Reference
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
inputs.m3ta-nixpkgs.packages.${pkgs.system}.opencode
];
}
Run Directly
nix run git+https://code.m3ta.dev/m3tam3re/nixpkgs#opencode
Usage
Basic Usage
# Start OpenCode in current directory
opencode
# Open specific project
opencode /path/to/project
# Start with specific task description
opencode "Fix the login bug"
# Show help
opencode --help
# Show version
opencode --version
Interactive Commands
OpenCode provides an interactive TUI with various commands:
- Navigation: Arrow keys to move, Enter to select
- Search:
/to search files,?for help - Edit:
eto edit selected file - Command Palette:
Ctrl+pto access commands - AI Chat:
Ctrl+cto open AI chat - Exit:
qorCtrl+dto quit
AI Chat Mode
# Start OpenCode
opencode
# Enter AI chat mode (Ctrl+c)
# Ask questions, request code changes, etc.
# Examples:
# - "Generate a REST API endpoint for user management"
# - "Refactor this function to use async/await"
# - "Find and fix potential memory leaks"
# - "Add unit tests for this module"
Task Management
# Ask OpenCode to work on a specific task
opencode "Implement authentication with JWT tokens"
# The agent will:
# 1. Understand the codebase
# 2. Plan the implementation
# 3. Generate necessary code
# 4. Make the changes
# 5. Verify the implementation
Configuration
Environment Variables
OPENCODE_API_KEY: API key for LLM providerOPENCODE_MODEL: Default model to use (e.g., gpt-4, claude-3-opus)OPENCODE_PROVIDER: LLM provider (openai, anthropic, etc.)OPENCODE_MAX_TOKENS: Maximum tokens for responsesOPENCODE_TEMPERATURE: Sampling temperature (0-1)OPENCODE_CONFIG: Path to configuration file
Configuration File
Create ~/.opencode/config.json:
{
"model": "gpt-4",
"provider": "openai",
"maxTokens": 4096,
"temperature": 0.7,
"systemPrompt": "You are a helpful coding assistant"
}
Project-Specific Config
Create .opencode.json in your project:
{
"include": ["src/**/*.ts", "tests/**/*.ts"],
"exclude": ["node_modules", "dist", "*.test.ts"],
"systemPrompt": "You are a TypeScript expert"
}
Advanced Usage
Code Refactoring
# Ask for refactoring suggestions
opencode "Review and refactor src/utils.ts for better performance"
# Apply refactoring automatically
opencode "Optimize the database queries in src/db/*.ts"
Bug Fixing
# Describe the bug
opencode "Fix the race condition in the payment processing module"
# OpenCode will:
# 1. Analyze the code
# 2. Identify the issue
# 3. Propose and implement fixes
# 4. Verify the solution
Feature Implementation
# Request new features
opencode "Add support for OAuth2 authentication"
# Be specific about requirements
opencode "Create a REST API with these endpoints: GET /users, POST /users, PUT /users/:id, DELETE /users/:id"
Code Review
# Get code review
opencode "Review src/api/*.ts for security vulnerabilities"
# Check for best practices
opencode "Review the entire codebase and suggest improvements following SOLID principles"
Documentation Generation
# Generate documentation
opencode "Add JSDoc comments to all functions in src/utils.ts"
# Create README
opencode "Generate a comprehensive README.md for this project"
Integration with Editors
VS Code
OpenCode can work alongside your editor:
# Keep VS Code running for editing
code .
# Use OpenCode for AI assistance in another terminal
opencode
# Switch between them as needed
Vim/Neovim
# Use Vim/Neovim as your editor
vim src/main.ts
# Use OpenCode for complex tasks
opencode "Refactor the authentication module"
Use Cases
Learning New Codebases
# OpenCode will:
# 1. Analyze the code structure
# 2. Explain how components work
# 3. Answer questions about the code
opencode "Explain how this project handles user authentication"
Porting Code
# Port from one language to another
opencode "Port this Python function to TypeScript"
Writing Tests
# Generate unit tests
opencode "Add comprehensive unit tests for src/utils.ts with 100% coverage"
Debugging
# Get help with debugging
opencode "I'm getting a null pointer exception in src/api/users.ts. Help me debug it"
Keyboard Shortcuts
Global
Ctrl+p- Open command paletteCtrl+c- Open AI chatCtrl+s- Save current fileCtrl+q- Quit?- Show help
Navigation
j/k- Down / Uph/l- Left / Rightgg- Go to topG- Go to bottom/- Searchn- Next search resultN- Previous search result
File Operations
e- Edit fileo- Open in external editord- Delete file (with confirmation)y- Yank (copy)p- Paste
Build Information
- Version: 1.1.18
- Language: TypeScript/JavaScript (core), Go (TUI)
- Runtime: Bun
- License: MIT
- Source: GitHub
Dependencies
bun- JavaScript runtime and package managerfzf- Fuzzy finder for file selectionripgrep- Fast text searchmodels-dev- Model definitions and schemas
Platform Support
- Linux (aarch64, x86_64)
- macOS (aarch64, x86_64)
Notes
- Includes a patch to relax Bun version check (changed to warning instead of error)
- Shell completions are installed for supported platforms (excludes x86_64-darwin)
- Tree-sitter WASM files are patched to use absolute store paths
- JSON schema is generated and installed to
$out/share/opencode/schema.json
Tips and Best Practices
Getting Started
- Start Small: Begin with simple tasks to get familiar with the interface
- Provide Context: Give clear, detailed descriptions of what you want
- Iterate: Work with OpenCode iteratively, refining requests as needed
- Review Changes: Always review AI-generated code before committing
Effective Prompts
- Be specific about requirements
- Provide examples of expected behavior
- Mention constraints or preferences
- Break complex tasks into smaller steps
Project Structure
- Keep your project well-organized
- Use consistent naming conventions
- Add clear comments to complex logic
- Maintain a clean git history
Related
- Adding Packages - How to add new packages
- Quick Start - Getting started guide
- OpenCode Documentation - Official repository and documentation