Fastclaw
Faster and better openclaw alternative
Ask AI about Fastclaw
Powered by Claude Β· Grounded in docs
I know everything about Fastclaw. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
FastClaw
A lightweight AI Agent runtime written in Go.
Single binary - Any LLM - Multi-agent - Sandbox - Cloud-ready
Platform admin: agents, models, skills, users, API keys
Per-agent management: chat, customize, scoped models / skills / channels / scheduler
What is FastClaw?
FastClaw is an Agent Factory β it creates, manages, and runs AI agents. Each agent has its own personality (SOUL.md), memory, skills, and tools. FastClaw handles the LLM communication, tool execution, sandbox isolation, and session management.
# Install (drops the binary into ~/.local/bin and adds it to PATH)
curl -fsSL https://raw.githubusercontent.com/fastclaw-ai/fastclaw/main/install.sh | bash
Quick Start
1. First Run
fastclaw
# Opens setup wizard β configure LLM provider β creates default agent.
# Foreground mode; ^C to stop. Use `fastclaw daemon start` to run in
# the background, or `fastclaw daemon install` to register a
# launchd / systemd service.
2. Dashboard
Open http://localhost:18953 and login with your admin token.
- Agents β Create and manage agents, each with its own personality and model
- Skills β Install shared skills from ClawHub or GitHub
- Models β Configure LLM providers (OpenAI, Anthropic, Ollama, OpenRouter, etc.)
- API Keys β Issue programmatic credentials (admin / user / agent tiers)
- Settings β General (theme), Account (profile + password), Runtime (sandbox config; admin only)
Non-admin users get scoped access to Models, API Keys, and Settings (General + Account) out of the box. They see admin-shared resources as
Inheritedand can layer their own private overlays on top β same inheritance pattern the agent runtime uses.
3. Agent Management
Click an agent to enter its management panel:
- Chat β Talk to the agent (debug/test)
- Files β Edit SOUL.md, IDENTITY.md, MEMORY.md, etc.
- Skills β Agent-private skills
- Models β Agent-specific provider + model overrides (shadow system entries by name; agent-scope
agents.defaults.modeloverrides the system default) - Channels β Connect IM bots (Telegram, Discord, Slack) so end-users can chat with the agent on their platform of choice
- Scheduler β Inspect and manage cron jobs the agent created via
create_cron_job("ζ―倩 9 ηΉζιζ", "5 ειεε«ζ"); pause / delete from the UI - Sessions β Conversation history
Sharing. Each agent has a Public access toggle in the Edit dialog
(default off). When on, anyone with the chat URL β /agents/{id}/chat/
β can chat with the agent under their own account; sessions / memory /
USER.md partition per chatter, while SOUL / IDENTITY / skills are
shared from the owner's row. When off, only the owner (or super_admin)
can access it.
Architecture
~/.fastclaw/
fastclaw.db # SQLite default β users, agents, sessions,
# apikeys, configs, agent_files all live here
skills/ # Shared skills (bundled + installed)
agents/
<agentId>/agent/skills/ # Agent-private skills (filesystem only)
The database is the source of truth for everything except skill folders
on disk. SQLite is the default; point FASTCLAW_STORAGE_DSN at Postgres
for multi-pod deployments.
There is no fastclaw.json. Bootstrap settings (port, bind, storage
DSN, sandbox backend) come from FASTCLAW_* env vars; everything user-
facing (providers, channels, settings, defaults) lives in the configs
table and is edited through the dashboard or fastclaw agents config.
What FastClaw Stores
| Data | Belongs to | Backing store |
|---|---|---|
| Agent records, SOUL.md / IDENTITY.md / MEMORY.md / agent.json | Agent | DB (agent_files table) |
| Sessions (chat history) | Agent Γ user | DB (sessions table) |
| API keys, users, scoped configs (providers/channels/settings) | Platform | DB |
| Skills | Agent / Global | Filesystem (skills/, agents/<id>/agent/skills/) |
| User accounts, billing | Application | Your app (ChatClaw, etc.) |
| Output files | Application | Your app / S3 |
Features
LLM Providers
- OpenAI, Anthropic, Ollama, OpenRouter, Groq, DeepSeek, Mistral, and any OpenAI-compatible API
- Per-agent provider + model override (agent-scope shadows system by name)
- Prompt cache support (RawAssistant preservation)
Channels
- Per-agent Telegram / Discord / Slack bot bindings β end-users chat with the agent on their platform
- Tokens validated before save (Telegram
getMe, Discord/users/@me, Slackauth.test) - Sessions are isolated per channel + chatID, so a user's Telegram thread and Discord thread stay separate
Tools & Sandbox
- Built-in: exec, read_file, write_file, list_dir, web_fetch, web_search, memory_search
- E2B cloud sandbox or Docker sandbox β automatic skill + workspace hydrate, post-exec sync (sandbox-side files mirrored back to the durable store after every tool call)
- MCP server support
- Plugin system (JSON-RPC subprocess)
Skills
- Bundled skills: code-runner, image-gen, data-analysis, translation, web-search, skill-creator
- Install from ClawHub or skills.sh
- Agent-private or globally shared
Memory
- MEMORY.md β long-term facts, auto-updated by heartbeat
- Session-based context with full history preservation
- Thinking/reasoning content preserved for memory extraction
API
- OpenAI-compatible
/v1/chat/completions(streaming) - Web chat
/api/chat/stream(SSE) - Live agent push via
/api/chat/subscribe(SSE) β surfaces cron-fired and other async replies into the open chat panel without a refresh - Session management
/api/chat/sessions - Agent CRUD
/api/agents(?all=truereturns the cross-tenant view, admin-only) - Per-agent scheduler
/api/agents/{id}/cron(list / toggle / delete) - Provider management
/api/config - Skill install
/api/skills/install(ClawHub + GitHub) - API key management
/api/apikeys(per-user; tiers: admin / user / agent) - User management
/api/users(admin) β top-level CRUD + nested/api/users/{id}/apikeysand/api/users/{id}/agentsfor admin-driven provisioning. Theagentsendpoint acceptsforkFromto clone an existing agent's identity (SOUL / IDENTITY / skills / model defaults) into the new user's namespace β primary building block for "user buys a bot" flows. Per-useragent_quotacaps how many agents a non-admin can self-create (-1= unlimited,0= admin-provisioned only). - App-user provisioning
POST /v1/usersβ third-party apps mint a stable fastclaw user_id per end-user, idempotent on(api_key, external_id). Or passuseron/v1/chat/completions(orX-Fastclaw-End-Userheader) for lazy mint on first call
Configuration
Bootstrap is env-only. Everything that needs to change at runtime
(providers, models, channels, defaults, sandbox toggle) lives in the
database and is edited through the dashboard or fastclaw agents config.
| Env var | Default | What it does |
|---|---|---|
FASTCLAW_HOME | ~/.fastclaw | Where the SQLite DB and skill folders live. |
FASTCLAW_PORT | 18953 | Gateway HTTP port. |
FASTCLAW_BIND | loopback | loopback (127.0.0.1) or all (0.0.0.0). |
FASTCLAW_STORAGE_TYPE | sqlite | sqlite or postgres. |
FASTCLAW_STORAGE_DSN | empty | Postgres DSN, e.g. postgres://u:p@host:5432/db?sslmode=disable. Empty = sqlite at $FASTCLAW_HOME/fastclaw.db. |
FASTCLAW_STORAGE_AUTO_MIGRATE | true | Apply schema migrations on boot. |
FASTCLAW_SANDBOX_ENABLED | dashboard | Override the Settings β Runtime toggle. |
FASTCLAW_SANDBOX_BACKEND | dashboard | docker or e2b. |
FASTCLAW_SANDBOX_IMAGE | dashboard | Docker image (Docker backend) or template id (E2B). |
FASTCLAW_OBJECT_STORE_* | unset | S3-compatible blob store for distributed deploys (multi-pod skill / file hydration). |
FASTCLAW_LOG_LEVEL | info | debug / info / warn / error. |
Anything not on this list β providers, models, default model, skill
catalog, channels, plugin config, scheduler β is configured at runtime
through the web UI (http://localhost:18953) or the CLI (fastclaw agents config, fastclaw provider, fastclaw skill).
Deployment
Local
fastclaw # foreground (^C to stop)
fastclaw daemon start # background (logs at ~/.fastclaw/daemon.log)
fastclaw daemon status
fastclaw daemon stop
fastclaw daemon install # register as a launchd / systemd service
Manage agents from the CLI (fastclaw agents β¦)
The fastclaw agents subcommand is a thin convenience wrapper around the
same store the dashboard uses. Agents you create here show up in the web
UI and vice-versa β there's only ever one fastclaw deployment per
FASTCLAW_HOME.
# Zero to a chattable agent in one command. On a fresh install this
# creates an `admin` user (random password printed once) and starts
# the gateway daemon if it isn't already running.
fastclaw agents init alpha \
--provider openai \
--model openai/gpt-4o-mini \
--api-key-env OPENAI_API_KEY
# Set per-agent overrides (model, temperature, sandbox, β¦).
fastclaw agents config alpha set temperature 0.7
fastclaw agents config alpha set sandbox.enabled true
# Upload the agent's identity files.
fastclaw agents files put alpha SOUL.md ./SOUL.md
fastclaw agents files put alpha IDENTITY.md ./IDENTITY.md
# Inspect.
fastclaw agents ls
fastclaw agents config alpha get
fastclaw agents files ls alpha
# Tear down.
fastclaw agents rm alpha
The CLI opens the operator's store directly (sqlite at
~/.fastclaw/fastclaw.db, or whatever FASTCLAW_STORAGE_DSN points at)
and writes through the same code paths the gateway uses. It does not
require the gateway to be running β but agents init will spin one up
in the background so a fresh agent is immediately reachable at
http://localhost:18953. Subsequent CLI writes (config set,
files put, rm, init re-runs) send SIGHUP to the running gateway
so it hot-reloads without restart. Windows lacks SIGHUP delivery, so
the CLI falls back to a hint asking you to run fastclaw daemon restart.
The default owner is the admin user. On an empty database
agents init creates that account with a generated password (printed
once); on a populated database it expects admin to exist or
--username to point at an existing user.
Resolving agents
CLI commands accept either a display name or an agt_β¦ id:
fastclaw agents config alpha getβ by display name (must be unique)fastclaw agents config agt_d3c4a5β¦ getβ by id
If the same text matches one agent's id and a different agent's display name, the CLI reports an ambiguity instead of guessing.
When you create an agent via agents init <name>, the name is the
display name and the id is auto-generated. To update an agent that was
created via the dashboard, pass its id explicitly:
fastclaw agents init "Cool Agent" --id agt_d3c4a5...
Configuration keys
Per-agent (saved at scope=agent under the agent's id):
model,temperature,maxTokens,thinking,policysandbox,sandbox.enabled,sandbox.backend,sandbox.image,sandbox.network
System-wide (saved at scope=system):
plugins,plugins.<name>skills.install,skills.entries,skillsLearnertools.providers,tools.categoriesobjectstore,taskqueue,heartbeat,memory,privacy,hooks,teams
Provider configs live in scope=system and are addressed as
provider.<name>.<field>:
fastclaw agents config alpha set provider.openai.apiKeyEnv OPENAI_API_KEY
fastclaw agents config alpha set provider.openrouter.apiBase https://openrouter.ai/api/v1
fastclaw agents config alpha set provider.openai.model gpt-4o # adds; idempotent
fastclaw agents config alpha set provider.openai.models '[]' # explicit clear
Provider presets ship for openai, openrouter, anthropic, ollama,
groq, deepseek, mistral β --api-key-env populates apiKey from
the named environment variable, the rest comes from the preset.
Agent system files
The CLI reads and writes the same agent_files table the dashboard's
file editor uses. Allowlisted filenames: SOUL.md, IDENTITY.md,
USER.md, BOOTSTRAP.md, MEMORY.md, HEARTBEAT.md, AGENTS.md,
TOOLS.md, agent.json.
| Subcommand | Purpose |
|---|---|
agents init <name> | Create or update an agent (provider/model/sandbox/files) |
agents ls | List all agents in the store |
agents config <name> get|set [key] [value] | Read or update a config value |
agents files ls|put|get <name> | Read / write the agent's system files |
agents rm <name> | Delete the agent record and its system files |
Docker
cd deploy/docker && ./start.sh
Kubernetes
env:
- name: FASTCLAW_BIND
value: "all"
- name: FASTCLAW_STORAGE_TYPE
value: "postgres"
- name: FASTCLAW_STORAGE_DSN
valueFrom:
secretKeyRef:
name: fastclaw-db
key: dsn
- name: FASTCLAW_OBJECT_STORE_ENDPOINT
value: "s3.amazonaws.com"
- name: FASTCLAW_OBJECT_STORE_BUCKET
value: "fastclaw-skills"
No config file is mounted β bootstrap is env-only. See deploy/k8s/
for full manifests.
Building
make build # builds the web bundle and the Go binary β bin/fastclaw
make install # installs to $HOME/.local/bin (override with PREFIX=)
make release-local # cross-compile darwin / linux / windows into dist/
The Makefile bakes the version, commit, and build date into the binary
via -ldflags. CI uses these targets too β see .github/workflows/.
License
FastClaw is source-available under the FastClaw Community License, based on Apache License 2.0 with additional conditions.
TL;DR:
- β Use it commercially as a backend for your own product
- β Internal deployment within your organization
- β Hosting FastClaw as a multi-tenant SaaS for unrelated organizations (without a commercial license)
- β Removing or modifying the FastClaw branding in the dashboard UI
The full Apache 2.0 text is reproduced inside the LICENSE file under the addendum. For commercial licensing inquiries: support@thinkany.ai.
