Every Desktop verb has a CLI peer. Same data substrate, same idempotency, same streaming semantics. Headless-first by design.
Install with pnpm build && pnpm link --global
from the host repo — both carabase and the
cb alias get exposed via the
package.json bin map. A standalone binary is also
available for systems without a Node toolchain.
# 7-step interactive wizard carabase init # non-interactive bootstrap from a config carabase init --non-interactive --config init.toml
Pipe a note from stdin. File a task with natural-language due dates.
Round-trip your SOUL.md through $EDITOR.
Every write verb takes --idempotency-key so retries
are safe.
echo "shipped agent runtime today" | carabase note add carabase task add "review codex findings" --due tomorrow carabase folio create acmebase echo "..." | carabase folio commit acmebase carabase soul edit # round-trips through $EDITOR
Semantic, hybrid, by entity, by memory window. Every read verb
accepts --json for piping into jq and your
shell.
carabase search semantic "indemnity cap on the term sheet" carabase search hybrid "podcast episode about X" carabase entity show samrivera carabase memory list --since 7d
Stream a live agent run with --watch. Open an SSE chat
session from anywhere your shell can reach the host.
--idempotency-key is honored across reconnects.
carabase agent run "summarize my last 30 daily notes" --watch carabase chat ask "what did I commit to last Tuesday" carabase chat sessions
Obsidian / Logseq / Notion / Bear / Roam / Reflect. Multipart upload streams from disk so a 500 MB ZIP doesn't sit in RAM.
carabase import upload notes.zip --source obsidian carabase import preview <id> carabase import commit <id> --default-folio personal --harvest --watch
Health checks, setup status, workspace switching, environment-scoped
secrets. --env dev|staging|prod switches state cleanly.
carabase --env staging health carabase setup status --watch carabase workspace list carabase env generate-secret
--idempotency-key so retries on flaky networks don't
duplicate logCards. --json for scripting.
--no-color for pipes. --quiet for cron.
--watch for streaming. --env to switch
per-env state. SSE plumbing handles streaming
(agent run --watch, chat ask).
The chat window is not the interface. Your shell is.
Request early access →