docs / install

Install

krabs is open source and self-hostable. You can install it without ever touching npm — clone the repo, run the kickoff, or use the one-line installer below. Pick whichever you prefer; they all land at the same final state.

One-liner install (recommended)

curl -fsSL https://krabs.dev/install.sh | sh

Requires node ≥ 22 and git on your PATH.pnpm gets enabled via corepack if you don't have it.

Override the install directory with KRABS_DIR=/where/to/install (default $HOME/krabs) or the branch with KRABS_BRANCH=....

not on npm — on purpose
We deliberately ship krabs without an npm package. The CLI is a single 79 KB ESM file that lives in the cloned repo; the installer symlinks it onto your PATH. No npm registry account, no Homebrew tap, no global state outside ~/.config/krabs/config.json.

What the script does

  1. Checks node ≥ 22 and git
  2. Enables pnpm via corepack if missing
  3. git clone into $HOME/krabs (or $KRABS_DIR)
  4. pnpm install (production + dev deps)
  5. Copies .env.example to .env if missing
  6. pnpm kickoff — builds the CLI + MCP server, runs all migrations, mints an API key, saves it to ~/.config/krabs/config.json, and prints the MCP config snippet for Claude Desktop / Cursor
  7. Symlinks dist/cli/main.mjs to the first writable directory on your PATH (~/.local/bin /usr/local/bin) as krabs

Manual install (no script)

If you'd rather run every step yourself:

git clone https://github.com/augusto-devingcc/krabs.git
cd krabs
cp .env.example .env
pnpm install
pnpm kickoff           # builds CLI + MCP, mints key, prints MCP config
ln -s "$PWD/dist/cli/main.mjs" /usr/local/bin/krabs   # optional: put 'krabs' on PATH

Then start the API in another terminal:

pnpm dev:api

Without cloning — npx github:

One-shot invocations without any persistent install (slow on first run because npx clones + installs each time, but useful for CI or scripts):

npx -y github:augusto-devingcc/krabs schema describe
npx -y github:augusto-devingcc/krabs account business-profile get

The root package.json declares bin.krabs = ./dist/cli/main.mjs, so npx finds the binary after the clone. This path doesn't install anything globally — it re-clones to a temp dir each invocation.

Prebuilt binary (GitHub Releases)

Every tagged release attaches a prebuilt krabs.mjs to its GitHub Releases page. If you only want the CLI (no dashboard, no MCP server, no local DB), grab it directly:

curl -fsSL https://github.com/augusto-devingcc/krabs/releases/latest/download/krabs.mjs \
  -o /usr/local/bin/krabs
chmod +x /usr/local/bin/krabs
krabs --version

You'll still need a krabs API to talk to — point the CLI at your self-hosted instance with KRABS_API_URL (see the manual flow above).

What you get on disk

  • ~/krabs/ — the cloned repo (configurable via $KRABS_DIR)
  • ~/krabs/dist/cli/main.mjs — the krabs CLI, a single ESM file (~80 KB)
  • ~/krabs/dist/mcp/server.mjs — the MCP server (the MCP config snippet points at this path)
  • ~/.config/krabs/config.json — your API URL + bearer token
  • ~/krabs/data/local.db — local SQLite, your entire krabs state
  • /usr/local/bin/krabs (or ~/.local/bin/krabs) — symlink to dist/cli/main.mjs so the CLI is on PATH

Uninstall

rm -rf ~/krabs
rm -rf ~/.config/krabs
rm -f /usr/local/bin/krabs   # or wherever the installer put it

All state is local. To revoke a key before removing, run krabs key revoke <key_id>.

Next steps

Edit this page on GitHub →last updated 2026-05-17 · v0.5.0