{"id":165443,"date":"2026-04-09T23:50:35","date_gmt":"2026-04-09T20:50:35","guid":{"rendered":"https:\/\/computingforgeeks.com\/?p=165443"},"modified":"2026-04-09T23:53:04","modified_gmt":"2026-04-09T20:53:04","slug":"claw-code-open-source-claude-code-alternative","status":"publish","type":"post","link":"https:\/\/computingforgeeks.com\/claw-code-open-source-claude-code-alternative\/","title":{"rendered":"Claw Code: Open-Source Claude Code Alternative in Rust (Install and Getting Started)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Claw Code hit 179,000 GitHub stars in nine days. That alone should tell you something about the demand for an open-source, terminal-first AI coding assistant that works with your own API key instead of a monthly subscription. Built in Rust by the <a href=\"https:\/\/github.com\/ultraworkers\" target=\"_blank\" rel=\"noreferrer noopener\">UltraWorkers<\/a> team, Claw Code is a from-scratch reimplementation of the Claude Code workflow: agentic coding in your terminal, with tool use, file operations, sandboxing, and multi-provider support.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The project ships a full event-driven architecture with a state machine runtime, crash recovery, and native Linux sandboxing. It supports not just Anthropic&#8217;s Claude models but also OpenAI, xAI\/Grok, Alibaba&#8217;s Qwen, and any OpenAI-compatible endpoint (Ollama, OpenRouter, LiteLLM). This guide walks through building Claw Code from source on Fedora, Ubuntu\/Debian, and macOS, configuring providers, and running your first prompts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Tested April 2026 on Fedora 42 (kernel 6.14, x86_64) and macOS 26.3 (Apple Silicon). Claw Code built from main branch (commit 4730b66), Rust 1.94.1. No tagged releases as of this writing<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What You&#8217;ll Learn<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>How Claw Code compares to Claude Code in architecture, cost, and features<\/li>\n\n\n\n<li>Building Claw Code from source on Fedora\/RHEL, Ubuntu\/Debian, and macOS<\/li>\n\n\n\n<li>Configuring API keys for Anthropic, OpenAI, xAI, and local models<\/li>\n\n\n\n<li>Running one-shot prompts, interactive sessions, and JSON output mode<\/li>\n\n\n\n<li>Multi-provider setup with Ollama, OpenRouter, and DashScope<\/li>\n\n\n\n<li>What works, what&#8217;s partial, and what to expect from this early-stage project<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Claw Code vs Claude Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before building anything, here&#8217;s how the two tools compare across the dimensions that matter most.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Dimension<\/th><th>Claw Code<\/th><th>Claude Code<\/th><\/tr><\/thead><tbody><tr><td>Source code<\/td><td>Open source (MIT\/Apache 2.0)<\/td><td>Proprietary<\/td><\/tr><tr><td>Language<\/td><td>Rust<\/td><td>TypeScript\/Node.js<\/td><\/tr><tr><td>Cost model<\/td><td>API key only (pay per token)<\/td><td>Pro\/Max subscription or API key<\/td><\/tr><tr><td>Supported models<\/td><td>Claude, GPT, Grok, Qwen, any OpenAI-compatible<\/td><td>Claude models only<\/td><\/tr><tr><td>Architecture<\/td><td>Event-driven state machine with crash recovery<\/td><td>Sequential tool loop<\/td><\/tr><tr><td>Sandbox<\/td><td>Linux namespace isolation (unshare)<\/td><td>macOS sandbox-exec, Docker on Linux<\/td><\/tr><tr><td>File operations<\/td><td>Read, write, edit, glob, grep (built-in tools)<\/td><td>Read, write, edit, glob, grep<\/td><\/tr><tr><td>Permission model<\/td><td>read-only, workspace-write, danger-full-access<\/td><td>Per-tool approval with allow lists<\/td><\/tr><tr><td>MCP support<\/td><td>Partial (in progress)<\/td><td>Full (stdio and SSE transports)<\/td><\/tr><tr><td>Plugin system<\/td><td>Rust plugin crate<\/td><td>Slash commands and MCP servers<\/td><\/tr><tr><td>Config format<\/td><td>JSON (hierarchical resolution)<\/td><td>JSON + CLAUDE.md<\/td><\/tr><tr><td>Maturity<\/td><td>Pre-release (no tagged versions), 9 days old<\/td><td>Production, 1+ year<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Claw Code makes sense if you want full control over the source, need multi-provider support, or want to avoid a subscription entirely. The Rust implementation also means lower memory usage and faster startup compared to the Node.js-based Claude Code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/computingforgeeks.com\/claude-code-cheat-sheet\/\">Claude Code<\/a> is the safer choice for production workflows right now. It has a year of battle-testing, full MCP support, and a broader tool ecosystem. If you rely on Claude Code daily, Claw Code is worth watching but not yet a drop-in replacement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The sweet spot for Claw Code today is experimentation, multi-model workflows, and contributing to an open-source tool that&#8217;s evolving fast.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Rust toolchain<\/strong>: Rust 1.94+ with <code>cargo<\/code> (install via <a href=\"https:\/\/rustup.rs\/\" target=\"_blank\" rel=\"noreferrer noopener\">rustup<\/a>)<\/li>\n\n\n\n<li><strong>Git<\/strong>: to clone the repository<\/li>\n\n\n\n<li><strong>Build tools<\/strong>: C compiler and development headers (gcc, make, openssl-dev)<\/li>\n\n\n\n<li><strong>API key<\/strong>: at minimum one of Anthropic, OpenAI, xAI, or a local model endpoint<\/li>\n\n\n\n<li><strong>Tested on<\/strong>: Fedora 42 (x86_64), macOS 26.3 (Apple Silicon), Rocky Linux 10, Ubuntu 24.04<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Install on Fedora \/ RHEL \/ Rocky Linux<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Fedora 42 was used for testing. The same steps apply to Rocky Linux 10, AlmaLinux 10, and RHEL 10 with minor package name differences.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install Build Dependencies<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Install the compiler toolchain and OpenSSL development headers:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>sudo dnf install -y git gcc make curl openssl-devel pkg-config<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If Rust is not already installed, grab it from rustup:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>curl --proto '=https' --tlsv1.2 -sSf https:\/\/sh.rustup.rs | sh -s -- -y\nsource \"$HOME\/.cargo\/env\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verify the Rust version:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>rustc --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should see 1.94.1 or newer:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>rustc 1.94.1 (9e136a06a 2026-03-23)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Clone and Build<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Clone the repository and build the release binary:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>git clone https:\/\/github.com\/ultraworkers\/claw-code.git\ncd claw-code\ncargo build --workspace --release<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The build takes about 1 minute 51 seconds on a 4-vCPU cloud instance. The binary lands at <code>target\/release\/claw<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Move it somewhere in your PATH:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>sudo cp target\/release\/claw \/usr\/local\/bin\/\nclaw --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The version output confirms a successful build:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>Claw Code\n  Version          0.1.0\n  Git SHA          4730b66\n  Target           x86_64-unknown-linux-gnu\n  Build date       2026-04-09<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The version 0.1.0 is hardcoded in Cargo.toml. There are no tagged releases or downloadable binaries on GitHub. The git SHA is the real version identifier.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Install on Ubuntu \/ Debian<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The process is nearly identical. Package names differ slightly on Debian-based systems.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install Build Dependencies<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Install the required development packages:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>sudo apt update\nsudo apt install -y git build-essential curl libssl-dev pkg-config<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install Rust if you don&#8217;t have it:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>curl --proto '=https' --tlsv1.2 -sSf https:\/\/sh.rustup.rs | sh -s -- -y\nsource \"$HOME\/.cargo\/env\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Clone, Build, and Install<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Clone and build the workspace:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>git clone https:\/\/github.com\/ultraworkers\/claw-code.git\ncd claw-code\ncargo build --workspace --release<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Copy the binary to your PATH:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>sudo cp target\/release\/claw \/usr\/local\/bin\/\nclaw --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The output shows the build target matching your architecture (x86_64 or aarch64 depending on your system).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Install on macOS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">macOS 26.3 on Apple Silicon was tested. Intel Macs follow the same steps.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install Xcode Command Line Tools and Rust<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">macOS needs Xcode command-line tools for the C compiler. If you haven&#8217;t installed them:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>xcode-select --install<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then install Rust:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>curl --proto '=https' --tlsv1.2 -sSf https:\/\/sh.rustup.rs | sh -s -- -y\nsource \"$HOME\/.cargo\/env\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Build Claw Code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Clone and build:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>git clone https:\/\/github.com\/ultraworkers\/claw-code.git\ncd claw-code\ncargo build --workspace --release<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Build completed in 1 minute 32 seconds on an Apple Silicon Mac. Install the binary:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>sudo cp target\/release\/claw \/usr\/local\/bin\/\nclaw --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The version output on macOS:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>Claw Code\n  Version          0.1.0\n  Git SHA          dc4fa55\n  Target           aarch64-apple-darwin\n  Build date       2026-04-09<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Note the <code>aarch64-apple-darwin<\/code> target. On Intel Macs, this reads <code>x86_64-apple-darwin<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configure Your API Key<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Claw Code reads API credentials from environment variables. The two Anthropic-specific variables behave differently, and getting them mixed up is a common source of 401 errors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ANTHROPIC_API_KEY<\/code> is for standard API keys (the ones starting with <code>sk-ant-<\/code>). Claw sends these in the <code>x-api-key<\/code> HTTP header. <code>ANTHROPIC_AUTH_TOKEN<\/code> is for OAuth tokens and uses the <code>Authorization: Bearer<\/code> header instead. Most users want the first one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Export your API key in your shell profile:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>echo 'export ANTHROPIC_API_KEY=\"sk-ant-your-key-here\"' &gt;&gt; ~\/.bashrc\nsource ~\/.bashrc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For Zsh users (default on macOS):<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>echo 'export ANTHROPIC_API_KEY=\"sk-ant-your-key-here\"' &gt;&gt; ~\/.zshrc\nsource ~\/.zshrc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Claw Code supports multiple providers through dedicated environment variables. Here&#8217;s the full matrix:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Provider<\/th><th>Environment Variable<\/th><th>Auth Header<\/th><\/tr><\/thead><tbody><tr><td>Anthropic (API key)<\/td><td><code>ANTHROPIC_API_KEY<\/code><\/td><td><code>x-api-key<\/code><\/td><\/tr><tr><td>Anthropic (OAuth)<\/td><td><code>ANTHROPIC_AUTH_TOKEN<\/code><\/td><td><code>Authorization: Bearer<\/code><\/td><\/tr><tr><td>OpenAI \/ OpenRouter<\/td><td><code>OPENAI_API_KEY<\/code><\/td><td><code>Authorization: Bearer<\/code><\/td><\/tr><tr><td>xAI (Grok)<\/td><td><code>XAI_API_KEY<\/code><\/td><td><code>Authorization: Bearer<\/code><\/td><\/tr><tr><td>Alibaba (Qwen\/DashScope)<\/td><td><code>DASHSCOPE_API_KEY<\/code><\/td><td><code>Authorization: Bearer<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Run Doctor<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>claw doctor<\/code> command checks your environment: authentication, config files, workspace detection, sandbox status, and system metadata. Run it after installation to catch configuration issues early.<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>claw doctor<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On Fedora 42 with <code>ANTHROPIC_API_KEY<\/code> set, all five checks passed:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>Doctor\n\nSummary\n  OK               5\n  Warnings         0\n  Failures         0\n\nAuth\n  Status           ok\n  Summary          environment credentials are configured\n  Details\n    - Environment       api_key=present auth_token=absent\n\nConfig\n  Status           ok\n  Summary          runtime config loaded successfully\n\nWorkspace\n  Status           ok\n  Summary          project root detected on branch main\n\nSandbox\n  Status           ok\n  Summary          sandbox protections are active\n  Details\n    - Enabled          true\n    - Active           true\n    - Supported        true\n    - Filesystem mode  workspace-only\n\nSystem\n  Status           ok\n  Summary          captured local runtime metadata\n  Details\n    - OS               linux x86_64\n    - Version          0.1.0\n    - Build target     x86_64-unknown-linux-gnu<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On macOS, doctor reports 4 OK and 1 warning. The sandbox check warns that Linux namespace isolation (unshare) is unavailable on macOS, which is expected. Claw&#8217;s sandbox relies on Linux-specific kernel features for filesystem isolation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each doctor section tells you something specific:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Auth<\/strong>: which credential environment variables are detected. If both show &#8220;absent,&#8221; your API key export didn&#8217;t take effect<\/li>\n\n\n\n<li><strong>Config<\/strong>: whether Claw found and loaded a valid settings file<\/li>\n\n\n\n<li><strong>Workspace<\/strong>: whether the current directory is inside a Git repository (needed for workspace-scoped file operations)<\/li>\n\n\n\n<li><strong>Sandbox<\/strong>: whether Linux namespace sandboxing is active. On Linux, all four sub-checks should show <code>true<\/code><\/li>\n\n\n\n<li><strong>System<\/strong>: OS, architecture, version, and build target metadata<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Your First Prompt<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Claw Code supports three modes: one-shot prompts, an interactive REPL, and JSON output for scripting.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">One-Shot Mode<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pass a prompt directly with the <code>prompt<\/code> subcommand. The <code>--compact<\/code> flag strips formatting for cleaner terminal output:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>claw --compact prompt \"Reply with only: hello from claw\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The response comes back immediately:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>hello from claw<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A more practical example that exercises file listing:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>claw --compact prompt \"List the files in the current directory.\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Claw uses its built-in tools (glob, read) to inspect the filesystem and returns a real directory listing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Interactive REPL<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Launch Claw without arguments to enter interactive mode:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>claw<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This opens a persistent session where Claw remembers context across prompts. Type your requests naturally. Use <code>\/quit<\/code> or Ctrl+C to exit.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">JSON Output Mode<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For scripting and CI pipelines, Claw can emit structured JSON:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>claw --output-format json prompt \"What OS is this?\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The JSON response includes the model&#8217;s answer, tool calls, and metadata. Pipe it to <code>jq<\/code> for extraction in automation scripts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Multi-Provider Setup<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One of Claw Code&#8217;s strongest differentiators is native multi-provider support. You can switch between Claude, GPT, Grok, and local models without changing tools.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Built-in Model Aliases<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Claw ships with shorthand aliases for common models:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Alias<\/th><th>Resolves To<\/th><\/tr><\/thead><tbody><tr><td><code>opus<\/code><\/td><td>claude-opus-4-6<\/td><\/tr><tr><td><code>sonnet<\/code><\/td><td>claude-sonnet-4-6<\/td><\/tr><tr><td><code>haiku<\/code><\/td><td>claude-haiku-4-5-20251213<\/td><\/tr><tr><td><code>grok<\/code><\/td><td>grok-3<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Use an alias with the <code>--model<\/code> flag:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>claw --model sonnet prompt \"Explain TCP three-way handshake in one sentence\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Output:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>The TCP three-way handshake is a connection establishment process where the client sends\na SYN, the server responds with a SYN-ACK, and the client replies with an ACK, confirming\nboth sides are ready to exchange data.<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">OpenAI<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Set your OpenAI API key and specify the model:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>export OPENAI_API_KEY=\"your-openai-api-key\"\nclaw --model gpt-4o prompt \"Hello from OpenAI\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">xAI \/ Grok<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Export your xAI key and specify the model. Both <code>grok-3<\/code> and <code>grok-3-mini<\/code> are supported:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>export XAI_API_KEY=\"xai-your-key-here\"\nclaw --compact --model grok-3 prompt \"Reply with exactly: hello from Grok 3 via claw\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tested output:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>hello from Grok 3 via claw<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The lighter <code>grok-3-mini<\/code> also works and is cheaper for quick tasks:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>claw --compact --model grok-3-mini prompt \"Reply with exactly: hello from Grok via claw\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verified output:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>hello from Grok via claw<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">DeepSeek<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">DeepSeek&#8217;s API is OpenAI-compatible, but there is a catch: Claw Code sends a <code>max_tokens<\/code> value that exceeds DeepSeek&#8217;s 8192 limit, causing a 400 error. The direct API does not work as of this writing. Use DeepSeek through OpenRouter instead:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>export OPENAI_BASE_URL=\"https:\/\/openrouter.ai\/api\/v1\"\nexport OPENAI_API_KEY=\"sk-or-v1-your-openrouter-key\"\nclaw --compact --model \"deepseek\/deepseek-chat-v3-0324\" prompt \"Reply with exactly: hello from DeepSeek via claw\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verified output:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>hello from DeepSeek via claw<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ollama (Local Models)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Claw connects to any OpenAI-compatible API endpoint. Point it at your local Ollama instance:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>export OPENAI_BASE_URL=\"http:\/\/127.0.0.1:11434\/v1\"\nunset OPENAI_API_KEY\nclaw --model llama3.2 prompt \"Hello from Ollama\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">OpenRouter<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">OpenRouter provides a unified API across dozens of models. Set the base URL and your OpenRouter key:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>export OPENAI_BASE_URL=\"https:\/\/openrouter.ai\/api\/v1\"\nexport OPENAI_API_KEY=\"sk-or-v1-your-openrouter-key\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then specify the model using OpenRouter&#8217;s naming convention:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>claw --compact --model \"openai\/gpt-4.1-mini\" prompt \"Reply with: hello from OpenRouter\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tested output:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>hello from OpenRouter via claw<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Google Gemini models also work through OpenRouter:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>claw --compact --model \"google\/gemini-2.5-flash\" prompt \"Reply with: hello from Gemini\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verified output:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>hello from Gemini via OpenRouter<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Any model available on <a href=\"https:\/\/openrouter.ai\/models\" target=\"_blank\" rel=\"noreferrer noopener\">OpenRouter&#8217;s model list<\/a> works the same way. Just use the model&#8217;s full slug as the <code>--model<\/code> value.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">DashScope (Alibaba Qwen)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For Alibaba&#8217;s Qwen models via DashScope:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>export DASHSCOPE_API_KEY=\"sk-your-dashscope-key\"\nclaw --model qwen-max prompt \"Hello from Qwen\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Key Commands Reference<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Claw Code has an extensive CLI. These are the flags and slash commands you&#8217;ll use most often.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Command \/ Flag<\/th><th>What It Does<\/th><\/tr><\/thead><tbody><tr><td><code>claw prompt \"...\"<\/code><\/td><td>One-shot prompt, returns response and exits<\/td><\/tr><tr><td><code>claw<\/code><\/td><td>Interactive REPL session<\/td><\/tr><tr><td><code>claw doctor<\/code><\/td><td>Environment and config health check<\/td><\/tr><tr><td><code>--model &lt;name&gt;<\/code><\/td><td>Select model by name or alias<\/td><\/tr><tr><td><code>--compact<\/code><\/td><td>Minimal output formatting<\/td><\/tr><tr><td><code>--output-format json<\/code><\/td><td>Structured JSON output for scripting<\/td><\/tr><tr><td><code>OPENAI_BASE_URL<\/code><\/td><td>Override the API endpoint via env var (for Ollama, OpenRouter)<\/td><\/tr><tr><td><code>--permission-mode<\/code><\/td><td>Set to read-only, workspace-write, or danger-full-access<\/td><\/tr><tr><td><code>--version<\/code><\/td><td>Show version, Git SHA, target, and build date<\/td><\/tr><tr><td><code>\/quit<\/code><\/td><td>Exit the interactive REPL<\/td><\/tr><tr><td><code>\/clear<\/code><\/td><td>Clear conversation history in REPL<\/td><\/tr><tr><td><code>\/compact<\/code><\/td><td>Toggle compact mode during a session<\/td><\/tr><tr><td><code>\/model &lt;name&gt;<\/code><\/td><td>Switch models mid-session<\/td><\/tr><tr><td><code>\/help<\/code><\/td><td>List available slash commands<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration Files<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Claw Code uses a hierarchical configuration system. Settings are loaded in order, with later files overriding earlier ones:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>~\/.claw.json<\/code> (global defaults)<\/li>\n\n\n\n<li><code>~\/.config\/claw\/settings.json<\/code> (XDG config)<\/li>\n\n\n\n<li><code>&lt;repo>\/.claw.json<\/code> (project-level)<\/li>\n\n\n\n<li><code>&lt;repo>\/.claw\/settings.json<\/code> (project-level, directory style)<\/li>\n\n\n\n<li><code>&lt;repo>\/.claw\/settings.local.json<\/code> (local overrides, gitignored)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Create a global config to set your default model and permission mode:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>mkdir -p ~\/.config\/claw\ncat &gt; ~\/.config\/claw\/settings.json &lt;&lt; 'SETTINGS'\n{\n  \"model\": \"sonnet\",\n  \"permission_mode\": \"workspace-write\"\n}\nSETTINGS<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For project-specific settings, create <code>.claw\/settings.json<\/code> in your repository root. This is useful for pinning a model per project or adding custom model aliases.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>settings.local.json<\/code> file is meant for personal overrides that shouldn&#8217;t be committed to version control. Add it to your <code>.gitignore<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Build with Docker<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The repository includes a <code>Containerfile<\/code> based on <code>rust:bookworm<\/code>. This image sets up the build environment but does not compile claw for you. Clone the repo and build the image:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>git clone https:\/\/github.com\/ultraworkers\/claw-code.git\ncd claw-code\ndocker build -f Containerfile -t claw-code-dev .<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then compile and run claw inside the container by mounting the source code as a volume:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>docker run --rm -it \\\n  -v \"$PWD\":\/workspace \\\n  -e CARGO_TARGET_DIR=\/tmp\/claw-target \\\n  -e ANTHROPIC_API_KEY=\"$ANTHROPIC_API_KEY\" \\\n  -w \/workspace\/rust \\\n  claw-code-dev \\\n  bash -c \"cargo build --workspace --release && \/tmp\/claw-target\/release\/claw --version\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The build takes around 2 minutes inside the container. Once compiled, test with a prompt:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>docker run --rm \\\n  -v \"$PWD\":\/workspace \\\n  -e CARGO_TARGET_DIR=\/tmp\/claw-target \\\n  -e ANTHROPIC_API_KEY=\"$ANTHROPIC_API_KEY\" \\\n  -w \/workspace\/rust \\\n  claw-code-dev \\\n  \/tmp\/claw-target\/release\/claw --compact prompt \"Reply with exactly: hello from Docker container\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tested output:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>hello from Docker container<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Doctor inside the container shows one warning because Docker containers don&#8217;t support Linux namespace isolation by default:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>Sandbox\n  Status           warn\n  Summary          sandbox was requested but is not currently active\n  Fallback reason  namespace isolation unavailable (requires Linux with `unshare`)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Run the test suite inside Docker to verify the build:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>docker run --rm \\\n  -v \"$PWD\":\/workspace \\\n  -e CARGO_TARGET_DIR=\/tmp\/claw-target \\\n  -w \/workspace\/rust \\\n  claw-code-dev \\\n  cargo test --workspace<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Our Docker test run passed 846 tests across all 9 crates with 1 failure (the doctor resume test, a known issue) and 1 ignored.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For Podman on Fedora or RHEL, add the <code>:Z<\/code> volume flag for SELinux relabeling:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>podman run --rm -it \\\n  -v \"$PWD\":\/workspace:Z \\\n  -e CARGO_TARGET_DIR=\/tmp\/claw-target \\\n  -w \/workspace\/rust \\\n  claw-code-dev \\\n  cargo build --workspace --release<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">What Works and What Doesn&#8217;t<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Claw Code is nine days old at the time of writing. Here&#8217;s an honest assessment based on testing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Working Well<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bash tool execution<\/strong>: runs shell commands with output capture, same as Claude Code<\/li>\n\n\n\n<li><strong>File operations<\/strong>: read, write, edit, glob, and grep all work reliably<\/li>\n\n\n\n<li><strong>Permission model<\/strong>: three-tier access control (read-only, workspace-write, danger-full-access) enforced consistently<\/li>\n\n\n\n<li><strong>Configuration system<\/strong>: hierarchical config loading with global, project, and local layers<\/li>\n\n\n\n<li><strong>Plugin architecture<\/strong>: Rust plugin crate exists for extending tool capabilities<\/li>\n\n\n\n<li><strong>Multi-provider routing<\/strong>: tested with Anthropic and OpenAI-compatible endpoints<\/li>\n\n\n\n<li><strong>Linux sandbox<\/strong>: full namespace isolation with filesystem restrictions on Linux<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Partial or In Progress<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>MCP support<\/strong>: the crate structure shows MCP work in progress, but it&#8217;s not production-ready yet<\/li>\n\n\n\n<li><strong>Interactive prompts<\/strong>: some interactive tool confirmations can be rough around the edges<\/li>\n\n\n\n<li><strong>macOS sandbox<\/strong>: sandbox depends on Linux unshare, so macOS runs without filesystem isolation<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Test Results<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Running the full test suite on Fedora 42:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>cargo test --workspace<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In our Docker test run, 846 tests passed across all 9 crates with 1 failure (the doctor resume test, a known issue) and 1 ignored. On bare-metal Fedora 42, the integrated CLI test suite showed 9 of 10 tests passing. The workspace includes nine Rust crates: api, commands, compat-harness, mock-anthropic-service, plugins, runtime, rusty-claude-cli, telemetry, and tools.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The UltraWorkers Ecosystem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Claw Code is part of the broader <a href=\"https:\/\/github.com\/ultraworkers\" target=\"_blank\" rel=\"noreferrer noopener\">UltraWorkers<\/a> ecosystem, which includes several related projects:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OmX<\/strong>: orchestration and agent management layer<\/li>\n\n\n\n<li><strong>clawhip<\/strong>: companion tooling for Claw Code workflows<\/li>\n\n\n\n<li><strong>OmO<\/strong>: model operations and routing infrastructure<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re exploring open-source Claude Code alternatives, check out our <a href=\"https:\/\/computingforgeeks.com\/opencode-vs-claude-code-vs-cursor\/\">OpenCode vs Claude Code vs Cursor comparison<\/a> and our <a href=\"https:\/\/computingforgeeks.com\/install-opencode-oh-my-openagent-linux\/\">OpenCode installation guide<\/a> for another Rust-based option with a different design philosophy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Sandbox Warning on macOS: &#8220;sandbox unavailable&#8221;<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Running <code>claw doctor<\/code> on macOS shows a sandbox warning because Claw&#8217;s isolation relies on Linux kernel namespaces (unshare). This is expected and doesn&#8217;t prevent Claw from working. File operations still function, but without the filesystem sandboxing that Linux provides. If you need sandboxing on macOS, run Claw inside a Linux Docker container.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Error: 401 Unauthorized When Using API Key<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The most common cause is using <code>ANTHROPIC_AUTH_TOKEN<\/code> instead of <code>ANTHROPIC_API_KEY<\/code>. Standard API keys (starting with <code>sk-ant-<\/code>) must use <code>ANTHROPIC_API_KEY<\/code>, which sends the key in the <code>x-api-key<\/code> header. The <code>ANTHROPIC_AUTH_TOKEN<\/code> variable is only for OAuth bearer tokens. Check which variable you exported:<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>env | grep ANTHROPIC<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should see <code>ANTHROPIC_API_KEY<\/code> with your key value. If you see <code>ANTHROPIC_AUTH_TOKEN<\/code> instead, update your shell profile to use the correct variable name.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Build Fails with &#8220;openssl\/ssl.h: No such file or directory&#8221;<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This means the OpenSSL development headers are missing. On Fedora\/RHEL\/Rocky, install <code>openssl-devel<\/code>. On Ubuntu\/Debian, install <code>libssl-dev<\/code>. On macOS, Xcode command-line tools bundle the required headers, so run <code>xcode-select --install<\/code> if you haven&#8217;t already.<\/p>\n\n\n\n<pre class=\"wp-block-code code\"><code>sudo dnf install -y openssl-devel   # Fedora\/RHEL\/Rocky\nsudo apt install -y libssl-dev      # Ubuntu\/Debian<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then re-run <code>cargo build --workspace --release<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For more AI coding tool guides, see our <a href=\"https:\/\/computingforgeeks.com\/claude-code-devops-engineers\/\">Claude Code for DevOps Engineers<\/a> setup guide, <a href=\"https:\/\/computingforgeeks.com\/setup-aider-ai-pair-programming\/\">Aider AI pair programming<\/a>, and <a href=\"https:\/\/computingforgeeks.com\/ai-coding-agents-devops-terraform-ansible-kubernetes\/\">using AI agents for Terraform, Ansible, and Kubernetes<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Is Claw Code affiliated with Anthropic?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. Claw Code is built by the UltraWorkers team and is not affiliated with, endorsed by, or connected to Anthropic in any way. It uses Anthropic&#8217;s public API (the same API anyone can access with a key) but is an independent, open-source project.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do I need a Claude Pro\/Max subscription to use Claw Code?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. Claw Code works exclusively with API keys. You pay per token used, with no monthly subscription required. This makes it cheaper for light usage and more expensive for heavy usage compared to Claude Code on a Max plan. You can also point Claw at free or self-hosted models via Ollama to avoid API costs entirely.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is Claw Code stable enough for production use?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Not yet. With no tagged releases and the project being nine days old, Claw Code is best suited for experimentation, learning, and contributing to the project. The 846\/847 unit test pass rate is strong, but partial MCP support and one known CLI test failure indicate active development. For production coding workflows, Claude Code remains the more reliable option as of April 2026.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How does Claw Code compare to OpenCode?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Both are open-source, terminal-based AI coding assistants written in systems languages. <a href=\"https:\/\/computingforgeeks.com\/setup-opencode-ai-coding-agent\/\">OpenCode<\/a> is written in Go and focuses on a clean TUI with multi-provider support. Claw Code is written in Rust and aims to replicate the full Claude Code workflow including event-driven architecture, crash recovery, and namespace sandboxing. OpenCode is more mature (several months old), while Claw Code has more architectural ambition but less stability. Both support multiple LLM providers.<\/p>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Claw Code hit 179,000 GitHub stars in nine days. That alone should tell you something about the demand for an open-source, terminal-first AI coding assistant that works with your own API key instead of a monthly subscription. Built in Rust by the UltraWorkers team, Claw Code is a from-scratch reimplementation of the Claude Code workflow: &#8230; <a title=\"Claw Code: Open-Source Claude Code Alternative in Rust (Install and Getting Started)\" class=\"read-more\" href=\"https:\/\/computingforgeeks.com\/claw-code-open-source-claude-code-alternative\/\" aria-label=\"Read more about Claw Code: Open-Source Claude Code Alternative in Rust (Install and Getting Started)\">Read more<\/a><\/p>\n","protected":false},"author":3,"featured_media":165444,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39034,690,35913,299,50],"tags":[669],"cfg_series":[],"class_list":["post-165443","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-dev","category-devops","category-how-to","category-linux-tutorials","tag-dev"],"_links":{"self":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/165443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/comments?post=165443"}],"version-history":[{"count":7,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/165443\/revisions"}],"predecessor-version":[{"id":165477,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/165443\/revisions\/165477"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media\/165444"}],"wp:attachment":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media?parent=165443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/categories?post=165443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/tags?post=165443"},{"taxonomy":"cfg_series","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/cfg_series?post=165443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}