npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@0x5278/copium

v1.0.0

Published

100% free, no-account, no-subscription coding agent for the terminal

Readme

Copium

banner

100% free, no-account, no-subscription coding agent for the terminal.

Why Copium

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.

Features

  • Multi-provider support - OpenRouter, BYOK OpenAI-compatible endpoints, and Ollama local models
  • Free by default - Defaults to OpenRouter free auto-routed models. No credit card required
  • Swarm agents - Run a coordinated explorer → coder → reviewer pipeline with shared memory
  • Agent tools - Read/write files, run commands, search code, check git status/diff
  • Persistent memory - Every request and response is logged in compressed JSON so the agent always has context
  • Permission tiers - Choose read-only, propose-edits, or auto-execute modes
  • Streaming responses - Real-time token streaming from models

Requirements

Quick Start

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 |

Slash commands

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

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

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.

Custom Themes

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"

One-shot mode

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"

Swarm Mode

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.

Supported Providers

| 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

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

Environment variables

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

CLI options

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

Memory System

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.

Development

bun install
bunx tsc --noEmit   # typecheck
bun test            # tests
bun start           # run the TUI

License

MIT