A small Node CLI for local Coven Code workflows. It runs deterministic local command, thread, tool, MCP, skill, plugin, and SDK flows so integration behavior can be exercised end-to-end without a hosted service.
npm test
npm start
npm run coven-code -- --help
npm run coven-code -- -x "what is 2+2?"
echo "list markdown files" | npm run coven-code
npm run demo # interactive end-to-end tour (or --auto for speed-run)The package exposes coven-code and coven-code-sdk bins.
- CLI reference - commands, flags, interactive mode, execute mode, JSON streaming, and thread workflows
- Configuration - settings files, environment variables, precedence, and common examples
- MCP, skills, and plugins - extension points for tools, MCP servers, skills, and project plugins
- SDK - package exports, install helper, execution API, permissions, and thread helpers
- Development - repository layout, local checks, release notes, and safety expectations
- Coven Dogfood Protocol - daily task packets, harness assignment, handoff, verification, retrospectives, and issue capture
- Demo - 15-20 minute end-to-end walkthrough of every shipped surface (
npm run demo)
Running coven-code with no arguments in a terminal starts the neo-blessed
panel TUI. Type / in the composer to open the slash-command menu with live
filtering and a details panel for commands, skills, and plugin actions.
$ coven-code
Coven Code 0.0.4
/Users/example/project
[chat] lane tools threads config help mode: smart effort: high
--------------------------------------------------------------------------------
Ready. Type a prompt or /help.
--------------------------------------------------------------------------------
>
The classic readline REPL remains available for scripts, demos, and compatibility:
COVEN_CODE_REPL=1 coven-codeLine history is stored at ${XDG_CONFIG_HOME:-~/.config}/coven-code/repl_history.
Use COVEN_CODE_REPL_HISTORY_FILE to override the path or
COVEN_CODE_REPL_HISTORY=0 to disable history in the classic REPL.
COVEN_CODE_TUI_SCRIPTED=1 is reserved for deterministic tests and automation
that need to drive the TUI with newline-separated input.
coven-code -x "prompt"
coven-code -x "see @README.md" </dev/null
coven-code -x "..." --stream-json
coven-code -x "..." --stream-json --stream-json-input < msgs.jsonl
coven-code --continue T-... -x "continue a thread"
coven-code --toolbox ./toolbox -x "use tb__my_tool"
coven-code --skills ./skills -x "use the data-map skill"Settings use the covenCode.* prefix. User settings live under
${XDG_CONFIG_HOME:-~/.config}/coven-code/settings.json; workspace settings
live under .coven-code/settings.json.
Useful settings and env vars:
covenCode.fuzzy.alwaysIncludePathscovenCode.tools.enable/covenCode.tools.disablecovenCode.permissionscovenCode.commands.allowlistcovenCode.mcpServerscovenCode.mcpPermissionscovenCode.mcpRegistry.urlcovenCode.notifications.enabledcovenCode.updates.modecovenCode.defaultVisibilityCOVEN_CODE_TOOLBOXCOVEN_CODE_API_KEYCOVEN_CODE_SKIP_UPDATE_CHECKCOVEN_CODE_FORCE_BELCOVEN_CODE_CLI_PATHCOVEN_CODE_HOME
Core:
coven-code --help,coven-code --version- panel TUI with transcript, lane status, tabs, status rail, composer, keyboard shortcuts, and command palette
- lane view for isolated worktree/branch context, harness selection, terminal output, changed files, diff summary, verification state, and PR/merge/cleanup status
- compatibility REPL with
/new,/continue,/queue,/mode,/reasoning, persistent history, and multiline prompts - command-palette aliases for thread archive, visibility, diagnostics, IDE, skills, plugins, and help
- one-shot execute mode with
-x/--execute @file, glob, image, explicit thread, and@@querythread-search references--stream-json,--stream-json-thinking,--stream-json-input, and--reasoning-effort- local persisted threads with labels, visibility, archive state, reports, and maps
Tools and permissions:
- built-in tools:
Bash,Read,Grep,glob,create_file,edit_file,undo_edit,Task,oracle,librarian,painter,mermaid,look_at,web_search,read_web_page,find_thread,finder, andread_mcp_resource coven-code tools list|make|show|use- toolbox discovery through
COVEN_CODE_TOOLBOX,--toolbox, and${XDG_CONFIG_HOME:-~/.config}/coven-code/tools coven-code permissions list|add|edit|test- delegated permission helpers receive
AGENT=coven-codeandCOVEN_CODE_THREAD_ID
MCP, skills, and plugins:
coven-code mcp add|list|doctor|approve- remote MCP headers, OAuth credential storage in
~/.coven-code/oauth, token refresh, Streamable HTTP sessions, and SSE fallback - MCP registry enforcement that blocks unlisted servers and fails closed when the registry is unreachable
- skill discovery from configured roots,
.agents/skills, legacy.claude/skillsroots, and built-ins coven-code skill list|show- project plugins from
.coven-code/plugins/*.tsand user plugins from${XDG_CONFIG_HOME:-~/.config}/coven-code/plugins/*.ts - plugin tools, commands, lifecycle events, configuration, status items, UI fallbacks, and helper APIs
SDK:
coven-code-sdk install [--force]- package root exports
execute,createUserMessage,createPermission, andthreads - SDK execution streams local
coven-code --stream-jsonmessages - SDK options map to CLI args for cwd, env, mode, reasoning effort, thinking, labels, visibility, archive, continuation, settings, toolbox, skills, MCP config, permissions, enabled tools, system prompt, logging, and permission bypass
Run the full local verification gate before committing or publishing:
git diff --check
node ./bin/coven-code.mjs --help
node ./bin/coven-code.mjs -x "what is 2+2?"
npm testThe project is intentionally dependency-free at runtime. Keep new behavior
covered in test/cli.test.mjs, avoid hosted-service assumptions, and keep
examples deterministic.