{"id":"74f679b8-e100-4c08-afb4-30ef4b48b248","slug":"owncode","kind":"mcp","name":"owncode","summary":"An experimental terminal coding agent with configurable models, Witch orchestration, and multiple context compaction methods.","owner":"muratmirgun","repoUrl":"https://github.com/muratmirgun/owncode","license":"MIT","licenseTier":"permissive","trust":"community","stars":8,"match":null,"fewStars":false,"format":"mcp","createdAt":"2026-09-18T22:26:06.000Z","addedAt":"2026-10-21T18:07:55.680Z","logoUrl":"https://avatars.githubusercontent.com/u/45563173?u=942d8fcaf0051890be467679cf26773737855df1&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["memory-knowledge"],"tags":["coding-agent","harness","jev","opencode","ai","cli","context-compaction","golang"],"runtime":"go","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-25T18:15:16.981Z","sample":false,"url":"https://conduits.dev/tools/owncode","language":"Go","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<p align=\"center\">\n  <img src=\"docs/assets/owncode.svg\" width=\"720\" alt=\"OwnCode\" />\n</p>\n\n<p align=\"center\"><strong>Your terminal. Your models. Your workflow.</strong></p>\n<p align=\"center\">An experimental coding agent with built-in Witch orchestration and configurable context compaction.</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/muratmirgun/owncode/releases/latest\"><img src=\"https://img.shields.io/github/v/release/muratmirgun/owncode?color=88c0d0\" alt=\"Latest release\" /></a>\n  <a href=\"https://github.com/muratmirgun/owncode/actions/workflows/build.yml\"><img src=\"https://github.com/muratmirgun/owncode/actions/workflows/build.yml/badge.svg\" alt=\"Build status\" /></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/github/license/muratmirgun/owncode?color=a3be8c\" alt=\"MIT license\" /></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#get-started\">Install</a> ·\n  <a href=\"#agents\">Agents</a> ·\n  <a href=\"#context-compaction\">Compaction</a> ·\n  <a href=\"docs/guide.md\">Documentation</a> ·\n  <a href=\"docs/roadmap.md\">Roadmap</a>\n</p>\n\n---\n\nOwnCode brings code editing, tool approvals, and parallel workers into one terminal interface.\nChoose your model, switch between Build and Plan, or let Witch coordinate specialist workers.\nKeep saved sessions and choose how OwnCode reduces their active context.\n\n- **Work visibly.** Follow tool activity, inspect diffs, and approve requests above the message input.\n- **Choose your models.** Connect a ChatGPT account, add a Claude API key, or configure a compatible endpoint.\n- **Coordinate workers.** Open live subagent transcripts and send follow-ups to saved workers.\n- **Control context.** Choose summary, Shake, Snapcompact, experimental Jev, or supported native compaction.\n- **Extend your workflow.** Load skills, project instructions, MCP tools, and language servers.\n- **Recover a turn.** Preview file changes before undoing or redoing a checkpoint.\n\n## Get started\n\n### Homebrew\n\n```bash\nbrew install muratmirgun/tap/owncode\nowncode\n```\n\n### Install script\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/muratmirgun/owncode/main/install -o /tmp/owncode-install\nbash /tmp/owncode-install\n```\n\nThe installer verifies SHA-256 checksums and installs into `~/.owncode/bin`.\nFollow its PATH instruction, then run `owncode`.\nIt leaves your shell configuration unchanged.\n\n<details>\n<summary>Choose a version or installation directory</summary>\n\n```bash\nbash /tmp/owncode-install --version v0.1.0\nbash /tmp/owncode-install --install-dir \"$HOME/.local/bin\"\n```\n\n</details>\n\n### Other installation methods\n\n| Method | Instructions |\n| --- | --- |\n| Release archive | Download a binary from [Releases](https://github.com/muratmirgun/owncode/releases/latest). |\n| Debian / RPM | Download the matching `.deb` or `.rpm` package from the release. |\n| Go | Run `go install github.com/muratmirgun/owncode@latest` with Go 1.27.1 or later. |\n\nReleases support **macOS and Linux**, with **arm64 and x86_64** binaries.\nGit is required for repository operations. Windows binaries are not available.\n\n### Connect a model\n\nStart OwnCode inside your project:\n\n```bash\ncd your-project\nowncode\n```\n\n1. Enter `/connect` to connect a ChatGPT account or add a Claude API key.\n2. Enter `/models` to select a model.\n3. Write a request and press `Enter`.\n\nOwnCode opens without a provider. Sending requires a configured model.\nFor other endpoints, use the [custom provider example](docs/theykk.example.json).\n\n## Agents\n\nPress **Tab** in the message field to switch profiles while agents are idle.\nYour draft stays intact.\n\n| Profile | Purpose |\n| --- | --- |\n| **Build** | Edit code and run tools through the approval flow. |\n| **Plan** | Explore the project with read-only tools. |\n| **Witch** | Coordinate specialist workers from the main conversation. |\n| **Custom** | Define your own prompt, tools, model, and reasoning level. |\n\n### Built-in Witch\n\nOwnCode includes a preset based on [Witch](https://github.com/muratmirgun/witch).\nSelect it with Tab or `/profiles`. The main conversation becomes the controller.\n\nOpen **Settings → Orchestration** to set models and reasoning levels for its eight roles.\nUnset role models use the base chat model.\nImplementation workers can edit assigned files; research and review workers remain read-only.\n\nA batch runs up to three children concurrently. Workers share the checkout.\nOpen `/agents` to inspect activity, follow a transcript, or send a follow-up.\nSee the [Witch guide](docs/witch.md) for roles and boundaries.\n\n## Context compaction\n\nChoose **Settings → Context → Method**, then run **`/compact`**.\nOne command uses your saved method.\n\n| Method | What it does |\n| --- | --- |\n| **Summary** | Creates a text summary with balanced, brief, or handoff modes. This is the default. |\n| **Shake** | Archives attachments and eligible older, large tool results. |\n| **Snapcompact** | Converts older text into image pages. Requires image support and remains experimental. |\n| **Jev** | Uses [Compact Engine](https://github.com/muratmirgun/compact-engine) to score and shorten eligible tool text. |\n| **Native** | Uses a provider's native compaction path when the endpoint supports it. |\n\n**Jev is experimental and requires a separate API key.**\nIt preserves attachments and protected content, so you do not need to run Shake first.\nIf the engine cannot meet the reduction budget, OwnCode retains the original active history.\n\nAutomatic compaction defaults to 95% context usage. You can change the threshold in Settings.\nA compatible chat API does not automatically support native compaction.\nSee [compaction setup and limits](docs/guide.md#context-compaction), including the Jev configuration example.\n\n## Skills and project context\n\nOwnCode reads ancestor `AGENTS.md` files and loads skill instructions on demand.\nInstall repository skills globally:\n\n```bash\nowncode add @owner/repo\nowncode add https://github.com/owner/repo --skill review-go\n```\n\nNew installations use `~/.owncode/skills`.\nType `@` to select installed skills or files. Skill selections insert `@skill/name`.\nOwnCode also discovers symlinked skills under `~/.agents/skills` and `~/.agent/skills`.\nUse `/skills` to inspect, update, or roll back a skill.\nThe leading `$skill-name` syntax remains supported.\n\n- Install skills from a local directory or a Git repository.\n- Use project skills in `.owncode/skills/` or `.agents/skills/`.\n- Add MCP servers for external tools.\n- Connect language servers for diagnostics, definitions, references, and symbols.\n\nOptional skills.sh search requires a valid catalog API token. Authenticated search has not been live-verified.\nGit installation works without catalog access.\nSee [skills](docs/guide.md#skills-and-installation) and [server configuration](docs/guide.md#mcp-and-language-servers).\n\n## Browser and computer control\n\nSelect optional backends in **Settings → Automation**:\n\n- **Embedded:** headless automation using an installed Chromium browser.\n- **Chrome / Brave:** visible, isolated browser sessions.\n- **CDP / Extension:** connect an external browser or explicitly shared tabs.\n- **macOS:** inspect and control native apps through system accessibility APIs.\n\nThese adapters need no paid automation service. The built-in browser client needs no Node.js or Python runtime. Both browser and computer access start disabled.\n\nRun `owncode browser setup` to extract the optional Chrome/Brave extension. See the [automation guide](docs/automation.md) for pairing, permissions, screenshots, and current limits.\n\n## Keyboard controls\n\n| Key | Action |\n| --- | --- |\n| `Ctrl+P` / `Ctrl+K` / `F1` | Open the command palette |\n| `Tab` | Switch agent profiles; complete an open suggestion |\n| `Ctrl+O` / `F2` | Select a model |\n| `Alt+R` / `F4` | Cycle supported reasoning levels |\n| `Ctrl+S` / `F3` | Open saved sessions |\n| `↑` / `↓` at the input boundary | Recall sent prompts or restore your draft |\n| `Esc` | Close a dialog or cancel active work |\n\nUse `/settings`, `/models`, `/profiles`, `/skills`, `/agents`, or `/help` if your terminal intercepts a shortcut.\nMac keyboards may require `Fn` for function keys.\n\n### Execution controls\n\n- `/fast on` requests priority processing for OpenAI and ChatGPT calls, including supported workers. `/fast off` selects standard processing.\n- `/yolo on` approves tool permission requests automatically, including worker requests. `/yolo off` restores normal permission checks.\n- `/fast` and `/yolo` without an argument toggle their modes. The input area shows active modes. Both reset on restart.\n\nFast mode preserves the model and reasoning level. Provider access and higher usage rates can apply.\nOwnCode does not send priority fields to other providers. See [OpenAI fast mode](https://developers.openai.com/api/docs/guides/fast-mode).\nYOLO changes permission prompts only. Plan restrictions, worker ownership rules, and explicit user questions remain active.\nTurning YOLO off retains approvals that you granted separately with **Allow for session**.\n\nWhile workers stream, `Σ ≈… TPS` shows the combined live rate for the current conversation and its workers.\nThe rate excludes finished workers and unrelated conversations. Live counts estimate visible text, reasoning, and tool arguments.\nProvider token counts replace estimates at completion when available. Hidden reasoning can make live rates differ from provider totals.\n\nEach worker has its own shell. Commands retain shell state within that worker's active task.\nCommands from different workers can overlap. Cancellation stops that worker's shell; its next command starts a fresh shell.\n\n## Configuration\n\nKeep model definitions and keys in **`~/.owncode.json`**.\nProject files can override global settings. Remove duplicate project entries when you want global values to apply.\nManaged provider connections use a separate credentials file in the operating system's user configuration directory.\n\nOwnCode uses its own configuration schema. It does not directly load current OpenCode configuration files or npm provider plugins.\nSee the [configuration guide](docs/guide.md#configuration) for search order, examples, and storage locations.\n\n## Questions\n\n### Is this the same project as OpenCode?\n\nOwnCode is an independent fork of the archived [Go OpenCode project](https://github.com/opencode-ai/opencode), which continued as [Crush](https://github.com/charmbracelet/crush).\nIt is separate from the current [OpenCode](https://github.com/anomalyco/opencode) application.\nThe original MIT license and attribution remain intact.\n\n### Can I resume a conversation?\n\nYes. OwnCode prints a resume command when you exit a saved chat:\n\n```bash\nowncode -s SESSION_ID\n```\n\nRun it from the same project directory and use the same data directory.\nYou can also select saved conversations through `/sessions`.\n\n### Can I use OwnCode in scripts?\n\n```bash\nowncode -p \"Explain this repository\"\nowncode -p \"List the main packages\" -f json\n```\n\n**Non-interactive mode automatically approves tool permissions for its session.**\nSee [scripting](docs/guide.md#scripting) before using it in automation.\n\n### How stable is it?\n\nOwnCode is experimental. Provider behavior depends on the model and endpoint.\nWorkers share files, recovery has limits, and some compaction methods require specific provider capabilities.\nThe [user guide](docs/guide.md) describes these boundaries.\n\n## Development\n\n```bash\ngit clone https://github.com/muratmirgun/owncode.git\ncd owncode\ngo build -o bin/owncode .\ngo test ./...\ngo vet ./...\n./bin/owncode\n```\n\nUse Go **1.27.1 or later** and Git.\nSee [development checks](docs/guide.md#development), the [roadmap](docs/roadmap.md), and [release instructions](docs/releasing.md).\n\nContributions are welcome. Keep changes focused and describe the checks you ran.\nFor interface changes, include a screenshot and terminal dimensions.\n\n## License and credits\n\nOwnCode uses the [MIT License](LICENSE).\nThanks to the original OpenCode contributors and the Charm community for the foundation.\nSee the [original credits](docs/guide.md#contributing-and-license) and [Witch license](docs/licenses/Witch-LICENSE).\n"}