Fork of oh-my-pi by Can Boluk, with a rewritten TUI and redesigned subagent system.
Arcane is a terminal-native coding agent built on Bun and Rust. It extends the upstream oh-my-pi fork with a rewritten terminal UI, a redesigned subagent system, and streamlined prompt architecture.
Note: Documentation is a work in progress.
bun install -g @nghyane/arcane
arc auth login # OAuth — one flow for all providers
arc # interactive mode
arc "fix the failing tests" # one-shotBuild from source
git clone https://github.com/nghyane/arcane.git
cd arcane && bun install
bun link --cwd packages/coding-agentArcane diverges from upstream in three areas that are too invasive for PRs: a ground-up TUI rewrite with differential rendering, a redesigned subagent/task system with structured delegation, and a simplified prompt architecture that co-locates tool definitions with their guidance. Together these touch nearly every layer of the stack, so Arcane lives as its own project.
Arcane is a lightweight coding agent, not a general-purpose AI platform.
- Fixed tool set — Five bundled subagents (explore, librarian, oracle, reviewer, task) cover the coding workflow. No plugin marketplace, no custom agent definitions.
- Depth over breadth — Every feature serves code editing, search, or review. Features that don't earn their keep get cut.
- Single source of truth — Tool definitions, schemas, and prompt guidance live together. No runtime overrides or dual config.
- Task complexity routing —
lowandhighcomplexity levels route subagent work to the right model automatically.
Rewritten TUI — Differential rendering with double buffering, LeftBorderBox layout, bundled theme presets (Nord Frost), Nerd Font detection, mouse text selection, transparent status line, and declarative tool renderers.
Redesigned subagent system — Five specialized subagents with structured delegation: explore (local code search), librarian (cross-repo search), oracle (planning and review), reviewer (code review), and task (fire-and-forget execution with todo tracking).
Streamlined prompt architecture — Tool descriptions co-located with definitions, agent prompts in static Markdown with Handlebars, no runtime prompt generation. Removed intent tracing, commit pipeline, and custom agent discovery.
Declarative tool rendering — Tool renderers declared alongside tool definitions. No renderer registry, no runtime dispatch.
Arcane is built on top of oh-my-pi by Can Boluk, which itself forks pi-mono. The following are upstream features:
Hashline editing — Edits anchor to content-derived hash tags, not line numbers. They survive concurrent modification, formatting, and reordering.
Multi-provider LLM client — 25+ providers through a single OAuth flow or API keys.
Extension system — Themes, skills, hooks, and custom tools.
Sessions — Branching, context compaction, and autonomous memory.
TypeScript + Rust — Bun for the runtime, Rust for performance-critical text and grep operations.
Stats dashboard — Local observability for token usage and tool call metrics.
Arcane supports 25+ LLM providers through a single OAuth flow or API keys.
arc auth login # OAuth — recommended
export ANTHROPIC_API_KEY="..." # or set keys directly
export OPENAI_API_KEY="..."
export GEMINI_API_KEY="..."
export OPENROUTER_API_KEY="..."Anthropic, OpenAI, Google, Copilot, OpenRouter, Ollama, and any OpenAI-compatible endpoint.
Custom provider
# ~/.arcane/agent/models.yml
providers:
my-ollama:
baseUrl: http://localhost:11434/v1
auth: none
api: openai-completions
discovery:
type: ollama| Package | Description |
|---|---|
@nghyane/arcane |
Main CLI application |
@nghyane/arcane-agent |
Agent runtime with tool calling |
@nghyane/arcane-ai |
Multi-provider LLM client |
@nghyane/arcane-tui |
Terminal UI library |
@nghyane/arcane-natives |
Rust bindings for text/grep ops |
@nghyane/arcane-stats |
Usage dashboard |
@nghyane/arcane-utils |
Shared utilities |
bun install
bun check # TypeScript + Rust checks
bun fmt # Format all
bun lint # Lint allOriginal work copyright (c) Can Boluk. Modified work copyright (c) Nghia Hoang.
