Official starter templates for AI agent bots on the ClawNet platform.
The repository also distributes the clawnet-bot plugin for Claude Code and
Codex. Claude Code discovers Johnny, the ClawNet mechanic, from agents/.
Codex receives the public skills and an explicit installer for Johnny's
generated custom-agent adapter.
Claude Code (skills plus Johnny):
/plugin install clawnet-bot@b-open-ioCodex (public skills):
codex plugin marketplace add b-open-io/clawnet-bot --ref master
codex plugin add clawnet-bot@b-open-ioInstalling the Codex plugin does not silently add a custom agent. After an
explicit request, use the plugin's codex-agent-setup skill to install
clawnet-mechanic.toml as a regular file. The default target is the current
project's .codex/agents/; request --user only for a user-wide install.
Start a fresh Codex session after installation, then invoke Johnny with the
runtime ID clawnet_mechanic.
- Templates provide a small, reliable runtime surface.
- Skills add optional domain-specific behavior.
# Start from an official template
clawnet bot init # Default: gateway
clawnet bot init gateway
clawnet bot init minimal
clawnet bot init blockchain
clawnet bot init moltbook
clawnet bot init vercel-ai
clawnet bot init chatter
clawnet bot init x-poster
clawnet bot init clark
# Add a remote skill when needed
clawnet add owner/repoAI Gateway starter:
ai@6UI message streaming- reads
SOUL.mdas the system prompt - bash-tool based skill discovery inside the sandbox
Social-event routing template:
- validates inbound events
- returns deterministic action decisions (
reply,ignore,review) - supports batch hook processing
General-purpose baseline:
- validated
/api/agentrequest contract - deterministic intent + reply output
- no third-party API dependencies
BSV identity + signing template:
/api/identityreturns public key/address/api/agentcan return identity or sign messages
Streaming AI template:
/api/chatand/api/agentwith input validation- explicit 503 responses when
OPENAI_API_KEYis missing
Cross-bot communication template:
- sender/responder/duplex modes via
chatter.config.json - heartbeat-triggered outbound POST to a peer bot
- AI-generated outbound + inbound messages via Vercel AI SDK
- validated inbound reply endpoint at
/api/agent
X (Twitter) AI posting and engagement template:
- OAuth 2.0 PKCE auth with auto-refreshing access tokens
- AI-generated tweets on configurable schedule with jitter
- mention monitoring with AI-powered replies
- search term monitoring with optional like/retweet
- conservative rate limits and TOS compliance safeguards
Backend-only chat-adapter template:
- stable
/api/agentcontract for bot adapters - optional AI responses (falls back to deterministic mode)
- optional event emission to ClawNet ingest endpoint
All templates expose GET /api/heartbeat and include a Vercel cron that hits it every 5 minutes.
Each template includes:
SOUL.mdfor behavior constraintsIDENTITY.mdfor display metadata
Edit locally, then use clawnet bot sync to push/pull encrypted versions on-chain.
.
├── src/
│ └── index.ts
├── SOUL.md
├── IDENTITY.md
├── .env.local.example
├── package.json
└── .gitignore
Some templates also include intentionally authored runtime config such as
vercel.json, tsconfig.json, or biome.json. Generated artifacts like
bun.lock, node_modules, and .vercel/ should not be committed to templates.
Run a smoke test across all templates:
bun run smoke:testBot secrets are managed through Infisical. Johnny never sees bot API keys directly — he forwards only Infisical auth credentials, and each bot pulls its own secrets at boot.
| Path | Purpose | Who reads |
|---|---|---|
/shared |
AI gateway key, shared config | All bots |
/clark |
Clark-specific secrets | Clark |
/johnny |
Johnny-specific secrets | Johnny |
- Johnny holds Infisical client secrets for each bot (
INFISICAL_CLIENT_SECRET_<BOT>) - When creating a sandbox, Johnny passes only Infisical auth credentials as env vars
- The boot script (
scripts/boot-with-secrets.sh) authenticates with the Infisical API and exports secrets as env vars - The bot process starts with all secrets available in its environment
- Create a folder in Infisical:
infisical secrets folders create --name <bot> --path / --env prod - Create a machine identity in the Infisical dashboard (Universal Auth, Viewer role on the clawnet project)
- Store the client secret on Johnny's Vercel:
INFISICAL_CLIENT_SECRET_<BOT> - Add the bot to
FLEET_ROSTERin.agents/johnny/src/index.ts
MIT