interference

An open-source terminal-native AI coding agent. 11 tools, 10 providers, agent registry, model catalog, real TUI. Built in TypeScript on Bun. MIT licensed.

Category

Developer Tool

Status

In progress

Availability

Open source

Role

Creator & Software Engineer

Year

2026

Context

Product focus

interference is a terminal-native coding agent. You describe a task; it explores the codebase and edits files or runs commands through an agentic tool-calling loop with explicit permissions.

The current public release is v0.4.0 on npm. The project has shipped the core agent loop, 11 tools, permissions, an Ink TUI, sessions with undo/redo, extensible skills, a subagent registry, model catalog, dynamic providers, review, prompt caching, and cost tracking. Published as interference-agent.

Architecture

  • Runtime: Bun — one toolchain for running, bundling, and testing.
  • Agent loop: Vercel AI SDK v7 with multi-step tool calling (stopWhen: stepCountIs), reasoning streaming per provider, cache-aware token-level cost tracking via SDK usage API. Model family prompts (Anthropic-specific behavioral tuning).
  • TUI: Ink 7.1 + React 19.2 with static history, streaming, tool spinners, status footer (model/mode/tokens/cost/git), model picker grouped by provider with virtual scrolling, slash autocomplete, session browser, toast, diff view with line numbers and syntax highlighting.
  • Agent registry (it. 34): Declarative subagent definitions (explore, general, review). Custom agents from interference.json#agents. Multi-subagent parallelism via Promise.all with correct result correlation via toolCallId. Review agent scans diffs for bugs, security issues, and simplification opportunities.
  • Model catalog (it. 37): Metadata from a live catalog (pricing, context window, capabilities) with on-disk cache (TTL 24h) and embedded offline snapshot. Replaces all hardcoded pricing.
  • Dynamic provider loading (it. 38): 10 providers loaded via async imports (BUNDLED_LOADERS). DeepSeek, Anthropic, OpenAI, GLM, Kimi, Google (Gemini), Groq, xAI (Grok), Mistral, OpenRouter. Adding a new provider = one entry in config.ts.
  • Prompt caching (it. 35): Anthropic opt-in ephemeral caching of system prompt. Cache reads cost ~10% of full input price. Cross-provider cache-hit tracking in cost accounting.
  • Tools: 11 tools (read, ls, glob, grep, webfetch, write, edit, bash, todowrite, question, task) with path containment and permission enforcement in code. Bash has timeout, output caps, deny list. Edit is atomic (unique-match with replaceAll).
  • Permissions: allow/ask/deny engine with glob pattern matching, first-match-wins. Event-driven confirmation. Default allow in Build mode.
  • Skills: Agent Skills format (SKILL.md). 3 bundled, auto-detection by keyword matching.
  • Sessions: Persisted in ~/.interference/<hash>/sessions/. Resume with --continue. Snapshots before write/edit, undo/redo.
  • Compaction: Auto-triggered at ~90% context. LLM-generated summary, model-specific thresholds, uses cheap model for the summary task.
  • Config: interference.json (model, mode, permissions, instructions, custom agents). Walk-up from cwd, first-match-wins.
  • Testing: 162 tests across 18 files. CI via GitHub Actions (typecheck + test on every push).

Engineering approach

Each feature was built as a closed iteration with a written plan and completeness pass. The codebase is ~80 source files. English-only source since July 2026. Default Build mode with zero confirmations. Reasoning/thinking blocks rendered with amber color accent, distinct from tool execution and assistant response. Next: local LLM support with auto-discovery, hardware-aware model recommendations, and an offline-first experience.

Skills

Bun, TypeScript, React, Ink, AI SDK, Zod, GitHub Actions