KelvinClaw supports three onboarding tracks based on user experience level. Each track has a verification command so the setup can be validated immediately.
The validated method for running KelvinClaw is Docker Compose.
Prerequisites:
gitdocker(with Compose v2)
Steps:
git clone https://github.com/AgenticHighway/kelvinclaw.git
cd kelvinclaw
cp .env.example .envThe default .env.example uses kelvin.echo which works immediately with no API keys.
Just copy and go:
docker compose up -dTo use a real LLM, open .env and uncomment one of the provider blocks:
For Anthropic:
KELVIN_MODEL_PROVIDER=kelvin.anthropic
ANTHROPIC_API_KEY=<your-key>For OpenRouter:
KELVIN_MODEL_PROVIDER=kelvin.openrouter
OPENROUTER_API_KEY=<your-key>For OpenAI:
KELVIN_MODEL_PROVIDER=kelvin.openai
OPENAI_API_KEY=<your-key>For public-facing deployments, generate a gateway token:
KELVIN_GATEWAY_TOKEN=$(openssl rand -hex 32)Start the host and gateway:
docker compose up -dLaunch the TUI:
docker compose --profile tui run --rm kelvin-tuiDocker profile (recommended):
cp .env.example .env && docker compose up -dLocal profile lifecycle:
scripts/kelvin-dev-stack.sh start
scripts/kelvin-dev-stack.sh status
scripts/kelvin-dev-stack.sh doctor
scripts/kelvin-dev-stack.sh stopRun modes:
- single prompt:
kelvin-host --prompt "hello" - interactive chat:
kelvin-host --interactive - daemon mode:
scripts/kelvin-dev-stack.sh start(gateway + memory controller background services)
kelvin-tui is a full-featured terminal interface that connects to a running gateway and
provides a live chat and tool-monitoring experience. It is the recommended way to interact
with KelvinClaw when the local profile is running.
Start the local profile, then launch the TUI:
scripts/kelvin-dev-stack.sh start
cargo run -p kelvin-tuiOr with a release binary:
scripts/kelvin-dev-stack.sh start
./kelvin-tuiKey capabilities:
- Stream assistant responses and tool calls in real time
- Click and drag to select text in the chat;
Ctrl+Ccopies to clipboard via OSC 52 (works inside Docker — no clipboard daemon required) Ctrl+Ttoggles the tools panel- Input history (
Up/Down), word-jump (Ctrl+Left/Ctrl+Right), and large-paste collapsing are all built in - Auto-reconnects to the gateway with exponential backoff on disconnect
Connect to a non-default gateway or session:
kelvin-tui --gateway-url ws://my-server:34617 --auth-token $TOKEN --session my-sessionFull reference: docs/gateway/terminal-ui.md
Use this if you want to run KelvinClaw without installing Rust locally.
Prerequisites:
gitdocker
Steps:
git clone <repo-url>
cd kelvinclaw
cp .env.example .env
docker compose up -d
docker compose run kelvin-host --prompt "hello"Expected result:
kelvin.cliand the selected model provider plugin are installed from artifacts baked into the image — no external index or network access required.- Running
kelvin-host --prompt "hello" --timeout-ms 3000works without local Rust setup.
Use this if you are comfortable with Rust and want local compile/test speed.
Prerequisites:
gitrustup+cargo
Steps:
git clone <repo-url>
cd kelvinclaw
cargo test -p kelvin-sdkExpected result:
- SDK test suite passes.
- Local profile boots gateway + memory controller and completes a host run.
Use this if you are building or testing WASM plugin modules.
Prerequisites:
gitrustup+cargowasm32-unknown-unknowntarget
Docker alternative:
dockerscripts/plugin-author-docker.shuses a repo-owned Ubuntu 24.04 plugin author image so you do not need to start from a blank Ubuntu container
Setup:
rustup target add wasm32-unknown-unknownSteps:
git clone <repo-url>
cd kelvinclaw
CARGO_TARGET_DIR=target/echo-wasm-skill cargo build --target wasm32-unknown-unknown --manifest-path plugins/examples/echo-wasm-skill/Cargo.toml
cargo run -p kelvin-wasm --bin kelvin-wasm-runner -- --wasm target/echo-wasm-skill/wasm32-unknown-unknown/debug/echo_wasm_skill.wasm --policy-preset locked_down
export PATH="$PWD/scripts:$PATH"
scripts/kelvin-plugin-dev.sh new --id acme.echo --name "Acme Echo" --runtime wasm_tool_v1
scripts/kelvin-plugin-dev.sh test --manifest ./plugin-acme.echo/plugin.jsonFor the supported model-plugin contributor path, use:
docs/plugins/build-a-model-plugin.mdplugins/kelvin-anthropic-pluginplugins/kelvin-openrouter-plugin
Docker-first authoring shortcut:
git clone <repo-url>
cd kelvinclaw
scripts/plugin-author-docker.sh -- scripts/test-plugin-author-kit.shVerification:
scripts/kelvin-plugin-dev.sh test --manifest ./plugin-acme.echo/plugin.json
kelvin plugin install --package ./plugin-acme.echo/dist/acme.echo-0.1.0.tar.gz
kelvin plugin listExpected result:
- Sample WASM skill builds successfully.
- WASM runner executes the module under sandbox policy.
- Plugin author commands scaffold and validate plugin package structure without touching root crates.
kelvin plugin installandkelvin plugin statuscover the local package-install and model-runtime path.- Model plugins can be scaffolded, built, packed, and locally installed through the same public SDK surface.
- First-party plugins (
kelvin.cli,kelvin.anthropic,kelvin.openrouter,kelvin.echo) are built from source inplugins/and baked into the Docker runtime image at build time. Thekelvin-initcontainer installs them on startup — no external index or signing infrastructure is required for the Docker flow. - Community and third-party plugins can be installed by setting
KELVIN_PLUGIN_INDEX_URLto point at a community-hostedindex.json. Signature enforcement is off by default; trust policy files can be added to re-enable it per deployment. - Onboarding verification intentionally checks runtime behavior and SDK tests, not only tool presence.