5 KiB
Quick Start: Using the Dart CLI REPL
Setup
1. Install dependencies (for Flutter app parts)
flutter pub get
2. Set up API key
Choose one:
Option A: OpenRouter (vendor-neutral, recommended)
export OPENROUTER_API_KEY="sk-or-..."
Option B: Anthropic
export ANTHROPIC_API_KEY="sk-ant-..."
3. Start the REPL
dart lib/clawd_code.dart
# OR (if you have it installed as a CLI tool)
clawd_code
You'll see:
clawd_code 0.1.0
Dart CLI migration shell. Type /help for commands.
clawd>
Using the REPL
Free-form prompts (new functionality!)
Just type any question:
clawd> How do I create a web server in Go?
The model will respond and may use tools:
→ Calling Bash
← Bash returned: Created main.go with basic HTTP server...
To create a simple web server in Go, I've created a main.go file
with an HTTP server that listens on port 8080...
Commands (slash-prefixed)
clawd> /help # See all commands
clawd> /model # View/change model
clawd> /status # Show session status
clawd> /effort high # Set effort level
clawd> /clear # Clear screen
Tool invocations (syntax: toolname: args)
clawd> bash: ls -la
clawd> read: /path/to/file
clawd> grep: pattern lib/src
clawd> glob: **/*.dart
Conversation history
Your conversation is maintained in memory during the session:
clawd> Write a function to reverse a string
<model responds with code>
clawd> Can you add error handling?
<model recalls previous code and improves it>
What Works
✅ Free-form prompts → Model processes them
✅ Model tool calls → Bash, file ops, search, etc. execute
✅ Streaming → See responses as they're generated
✅ Conversation history → Model remembers context
✅ Cost tracking → See how much you've spent
✅ Multiple vendors → Works with OpenRouter or Anthropic
What Doesn't Work Yet
❌ Real background tasks → /tasks stores metadata only, no execution
❌ Real MCP servers → /mcp is simulated
❌ Real agents → /agents is simulated
❌ Some commands → 25+ commands not yet ported
Environment Variables
Control behavior with these variables:
# API selection
export USE_OPENROUTER=true # Prefer OpenRouter
export USE_ANTHROPIC=true # Prefer Anthropic
# API keys
export OPENROUTER_API_KEY="..."
export ANTHROPIC_API_KEY="..."
# Model override (if not using /model command)
export CLAUDE_CODE_MODEL="gpt-4" # OpenRouter model
# Debug
export CLAWD_DEBUG=true # More verbose output
Troubleshooting
"No API key configured"
export OPENROUTER_API_KEY="your-key-here"
# OR
export ANTHROPIC_API_KEY="your-key-here"
"Base URL not configured"
This is the new vendor-neutral requirement. Set one of:
export OPENROUTER_BASE_URL="https://openrouter.ai/api/v1"
export ANTHROPIC_BASE_URL="https://api.anthropic.com/v1"
export CLAUDE_CODE_BASE_URL="https://your-backend.com/api/v1"
"Unknown model"
Set a valid model name:
/model claude-opus-4
# OR
/model openrouter/auto
Model is slow
Check your API key is valid and you have quota available.
Task not persisting
Tasks are saved to ~/.clawd_code/tasks/ as JSON files. Check that directory exists and is writable.
Examples
Example 1: Code generation
clawd> Write a Dart async function that fetches data from an API
<model responds with code, may call Bash to create a file>
Example 2: File editing
clawd> Read lib/src/app.dart and explain the main entry point
<model calls Read tool, then explains>
Example 3: Debugging
clawd> Search lib/ for all uses of BashTool
<model calls Grep, finds all references>
Example 4: Web research
clawd> Search for best practices for Dart CLI development
<model calls WebSearch tool if available, returns current info>
Cost Tracking
After each model call, you'll see:
$0.05 for this prompt (1,234 input + 456 output tokens)
Session total: $0.32
Costs saved to ~/.claude/last_session_cost.json on exit.
Next Steps
- Try
/helpto see all commands - Try a free-form prompt about your codebase
- Use
/tasks createto track work - Use
/configto see and change settings - Use
/themeto change appearance
Architecture Note
This REPL implementation:
- ✅ Is vendor-neutral (works with OpenRouter, Anthropic, or custom backend)
- ✅ Works without any backend (model API is external, not local)
- ✅ Maintains conversation history in memory
- ✅ Integrates with full tool system (permissions, telemetry, etc.)
- ❌ Does not require Flutter (pure Dart CLI)
For the full Dart CLI experience without Flutter deps, run:
dart lib/clawd_code.dart
For the Flutter app with UI, run:
flutter run
Both use the same underlying model integration.