Observed since 20 Oct, 22:37 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
100% free, no-account, no-subscription coding agent for the terminal

100% free, no-account, no-subscription coding agent for the terminal.
Why cope with expensive AI coding tools when Copium is free. Copium is a terminal-based coding agent (TUI) that gives you a fully functional coding agent without gating features behind payment, waitlists, or required accounts.
bun install
bun start
This starts the interactive chat UI. Type a prompt and press Enter to send (Shift+Enter for a newline).
| Key | Action |
|---|---|
| Enter | Send message |
| Shift+Enter | Newline |
| ? | Show help overlay |
| Ctrl+L | Clear the transcript |
Type these in the input box:
| Command | Action |
|---|---|
/model | Pick a model from the provider (interactive picker) |
/permission | Switch permission level: read-only / propose-edits / auto-execute |
/permission <lvl> | Set permission level directly |
/swarm <task> | Run a swarm of agents on a task |
/tools | List the tools the agent can use |
/config | Show current provider/model/permission/swarm config |
/stats | Session stats: turns, tool calls, tokens, context % |
/sessions | Resume a previous saved session |
/export [id] [dest] | Export a session as a shareable folder |
/import <folder> | Import an exported session folder |
/skill [name] | List skills, or arm one for your next message |
/plugins | List discovered plugins and their commands |
/theme | Pick a color theme (built-in or custom) |
/bypassperms | Toggle never-ask permission mode (/yolo) |
/clear | Clear the transcript |
/help | Show help overlay |
/version | Print version |
Skills are markdown files that inject instructions into the agent's system prompt. Place them in ~/.config/copium/skills/ (all projects) or .copium/skills/ (this project only):
---
name: commit-style
description: Conventional Commits for this repo
trigger: auto # auto = keyword-matched, manual = via /skill <name>
keywords: commit, git commit
---
When creating git commits, use Conventional Commits format...
Auto-triggered skills activate when your message matches their keywords. Manual skills are armed with /skill <name> and apply to the next message.
Plugins are folders with a plugin.json and an entry module. Drop them in ~/.config/copium/plugins/ (user) or .copium/plugins/ (project):
my-plugin/
plugin.json # { "name": "my-plugin", "version": "1.0.0" }
main.ts # default export: (ctx: PluginContext) => void
// my-plugin/main.ts
import type { PluginContext } from 'copium/src/plugins/loader';
export default function main(ctx: PluginContext) {
ctx.registerCommand('hello', 'say hi', (arg) => console.error(`hi ${arg}`));
ctx.registerTool(new MyCustomTool());
ctx.registerTheme({ name: 'my-theme', accent: '#ff5500' });
ctx.on('turn-end', () => console.error('turn finished'));
}
Plugins can register tools (available to the model), slash commands, themes, and subscribe to lifecycle events (turn-start, turn-end, tool-call). Disable a plugin with "plugins": { "my-plugin": false } in config. See examples/plugins/wordcount/ for a working example.
⚠️ Plugins run with full runtime access — only install plugins you trust.
Drop a JSON file in ~/.config/copium/themes/my-theme.json. Partial palettes merge over defaults:
{ "name": "my-theme", "accent": "#ff5500", "bg": "#0d0d0d" }
Pick it with /theme (custom themes are marked (custom)).
In one-shot mode you can pass /model <id> as the prompt to just switch the model:
bun run src/index.ts "/model meta-llama/llama-3.3-70b"
Pass a prompt as an argument to run non-interactively (no confirmations; denied unless --permission auto-execute):
bun run src/index.ts "explain the diff in my last commit"
Enable swarm mode with --swarm, then use /swarm in chat to run a task through a pipeline of agents:
bun run src/index.ts --swarm
# then: /swarm implement user authentication with JWT tokens
By default, three agents run in sequence, each handing its output to the next: an Explorer scans the codebase and gathers context, a Coder implements the change, and a Reviewer checks it for correctness. They run one after another (not concurrently) so each stage can build on the last, and they share context and memory through compressed JSON logs stored in .swarm/ next to your workspace.
| Provider | Default Model | Notes |
|---|---|---|
| OpenRouter | cohere/north-mini-code:free | Free model, no API key needed |
| BYOK | deepseek-chat | Bring your own OpenAI-compatible endpoint |
| Ollama | (first available) | Local models, fully offline |
Configuration lives in ~/.config/copium/config.json (override the path with --config or the COPIUM_CONFIG_FILE environment variable).
{
"provider": "openrouter",
"openrouter": { "apiKey": "", "model": "cohere/north-mini-code:free" },
"byok": { "endpoint": "https://api.deepseek.com/v1", "apiKey": "", "model": "deepseek-chat" },
"ollama": { "endpoint": "http://localhost:11434", "model": "" },
"permissionLevel": "propose-edits",
"swarm": { "enabled": false, "maxAgents": 3 }
}
| Variable | Description |
|---|---|
OPENROUTER_API_KEY / COPIUM_OPENROUTER_API_KEY | OpenRouter API key |
COPIUM_OPENROUTER_MODEL | OpenRouter model ID |
COPIUM_BYOK_ENDPOINT / COPIUM_BYOK_API_KEY / COPIUM_BYOK_MODEL | BYOK endpoint, key, model |
COPIUM_OLLAMA_ENDPOINT / COPIUM_OLLAMA_MODEL | Ollama endpoint, model |
COPIUM_PROVIDER | ollama | openrouter | byok |
COPIUM_PERMISSION_LEVEL | read-only | propose-edits | auto-execute |
COPIUM_SWARM_ENABLED | Enable swarm mode |
COPIUM_SWARM_MAX_AGENTS | Max agents in the swarm pipeline |
copium Start the interactive chat UI
copium "<prompt>" Run a one-shot prompt (non-interactive)
copium /swarm "<task>" Run a swarm of agents on a task
--provider <p> ollama | openrouter | byok
--model <m> Model name (provider-specific)
--permission <lvl> read-only | propose-edits | auto-execute
--swarm Enable swarm mode
--max-agents <n> Max swarm agents (default 3)
--config <path> Path to config file
--list-models List available models for the configured provider
--version, -v Print version
--help, -h Show this help
Every interaction is logged to .swarm/memory/ in your workspace as compressed JSON. The agent reads this memory on every request to maintain full context across sessions.
bun install
bunx tsc --noEmit # typecheck
bun test # tests
bun start # run the TUI
MIT
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.0.0Registry latest | 25 Aug 2026 | 4 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 22:37 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:c8f508e049bf4156df3026dabdd89fc957886e97ec1e0a89461175743bdf6033