Claude CLI is not installed or not in your PATH. Fix:
npm install -g @anthropic-ai/claude-code
claude # authenticate in browserThen restart the OCC server. The Setup Check modal (first launch) will verify this automatically.
Yes, but with limitations. You can use Ollama (local), HuggingFace, OpenRouter, or OpenAI as providers. Configure them in Settings > LLM Providers. The workflow chat and BLOB sessions currently require Claude CLI, but chains work with any provider.
No. Docker is optional — only needed for sandboxed bash pre-tool execution. OCC runs natively with Node.js 20+ and SQLite.
Go to Settings > About > Run Setup Check. This reopens the prerequisites modal.
| Use case | Recommended | Why |
|---|---|---|
| Simple classification, extraction | claude-haiku-4-5 |
Fast, cheap ($0.25/M input) |
| Analysis, synthesis, writing | claude-sonnet-4-6 |
Best quality/cost balance ($3/M input) |
| Deep reasoning, complex tasks | claude-opus-4-6 |
Most capable ($15/M input) |
| Privacy-sensitive data | llama3.2:1b (Ollama) |
Runs locally, zero cost, data stays on machine |
| Budget-critical, high volume | Ollama or HuggingFace free tier | $0 per token |
Best practice: Use Haiku for subtasks and Sonnet only for the final synthesis step. This saves 80% on cost.
Yes. Each step has its own model: field:
steps:
- id: gather
model: claude-haiku-4-5 # cheap
- id: analyze
model: claude-sonnet-4-6 # smart- Install Ollama
- Pull a model:
ollama pull llama3.2:1b - OCC auto-detects running Ollama models in Settings > LLM Providers
Yes, via an OpenAI-compatible agent loop. OCC translates tools (Bash, Read, Write, WebSearch, etc.) to OpenAI function calling format. Quality depends on the model — large models (70B+) handle tools well, small models (1-3B) may struggle.
OCC analyzes depends_on to build a DAG (directed acyclic graph):
Steps with no depends_on → Wave 1 (parallel)
Steps depending on Wave 1 → Wave 2 (parallel)
Steps depending on Wave 2 → Wave 3 (parallel)
Wall time = slowest step per wave, not sum of all steps. A 10-step chain with 4 waves runs in ~70s instead of ~120s sequential.
Every step is checkpointed to SQLite immediately after completion. If the process crashes:
- Restart the server
- The execution resumes from the last completed step
- No work is lost
Without pre-tools, the LLM must plan a tool call, execute it, read the result — 3 extra interactions costing tokens. With pre-tools, data is collected before the LLM call at zero token cost:
pre_tools:
- type: http_fetch # downloads page content (0 tokens)
url: "{input.url}"
inject_as: page_content
prompt: "Analyze: {page_content}" # LLM only sees the resultYes. Use cron syntax:
curl -X POST http://localhost:4242/schedules \
-H "Content-Type: application/json" \
-d '{"chainName": "market-monitor", "cron": "0 9 * * 1-5", "input": {"sector": "AI"}}'This runs market-monitor every weekday at 9 AM.
- Dry-run first:
occ dry-run my-chain -i key=value— shows execution plan without LLM calls - Check logs: Set
LOG_LEVEL=debugin.env - Dashboard: The monitor sidebar shows real-time step status with error messages
- Workflow Chat: Ask "debug this chain" — the AI will analyze step outputs and errors
- REST API:
GET /executions/:idreturns detailed per-step results including error messages
No hard limit. Tested with 12-step chains with 6-way parallelism. Practical limits:
- Steps: ~50 (beyond this, consider pipelines)
- Parallel workers: 5 default (configurable via
MAX_CONCURRENT_EXECUTIONS) - Timeout: 30 min per step (configurable via
CLAUDE_TIMEOUT_MS)
OCC itself is free. You pay for LLM API usage:
| Model | Input cost | Output cost | Typical chain (10 steps) |
|---|---|---|---|
| Claude Haiku 4.5 | $0.25/M | $1.25/M | ~$0.03 |
| Claude Sonnet 4.6 | $3.00/M | $15.00/M | ~$0.60 |
| Ollama (local) | Free | Free | $0.00 |
| HuggingFace (free tier) | Free | Free | $0.00 |
With model routing (Haiku for subtasks + Sonnet for synthesis): ~$0.12-0.18 per complex chain. See Benchmarks.
For single calls: OCC adds ~14% overhead (2s for YAML parsing, SQLite, SSE).
For multi-step workflows: OCC is faster because of parallelism. A 10-step chain runs in 69s via OCC vs 97s sequential. See Benchmarks.
Claude's prompt caching. Sequential calls reuse the cache (repeated context is cheaper). Parallel calls each start fresh — no cache sharing. This is the "parallelism tax": ~48% more cost for ~29% time savings. Whether it's worth it depends on whether you value speed or budget more.
Make sure CHAINS_DIR points to the correct directory. The chains directory is set in .env or defaults to ./chains relative to the server working directory.
- Open the Canvas tab
- Right-click to add steps
- Drag connections between steps to set dependencies
- Click "Run" to execute
- Or use Workflow Chat — describe what you want in natural language
BLOB (Block-Level Organic Builder) is an autonomous AI canvas. You describe a goal, and the AI plans, builds, and iterates on a chain — adding steps, running tests, and refining. It's more exploratory than the structured canvas editor.
OCC is used in production for internal workflows. For public-facing deployments:
- Set
OCC_API_KEYfor authentication - Use a reverse proxy (nginx/Caddy) for TLS
- Set
REST_HOST=127.0.0.1(default) to block external access without proxy - Review SECURITY.md for the full hardening checklist
# On your server:
git clone https://github.com/lacausecrypto/OCC.git
cd OCC/mcp-server && npm install && npm run build
# Create .env with production settings:
cp .env.example .env
# Edit: set OCC_API_KEY, OCC_ENCRYPTION_KEY, REST_HOST, etc.
# Run with systemd or pm2:
pm2 start dist/rest.js --name occSee the Docker deployment section for containerized deployment.
Not currently. OCC is single-process with SQLite. For most use cases (up to ~1000 executions/day), this is sufficient. The queue system handles concurrency within a single process.
Model Context Protocol — a standard for LLMs to use tools. OCC is both:
- MCP Server: exposes 28 tools (run-chain, list-chains, etc.) for Claude Code/Desktop
- MCP Client: chains can call any external MCP server via the
mcp_callpre-tool
Add to your .mcp.json:
{
"mcpServers": {
"occ": {
"command": "node",
"args": ["/path/to/OCC/mcp-server/dist/index.js"]
}
}
}Then in Claude Code, you can say "run the code-review chain on this repo" and it will use OCC.
SQLite file locking issue on Windows. The shared test cleanup utility handles this in CI. For production, ensure only one OCC process accesses the database at a time.
For Claude: check that token counting includes cache_read_input_tokens. Fixed in v0.3.0+.
For Ollama: requires stream_options: { include_usage: true }. Fixed in v0.3.0+.
For HuggingFace: the Router API doesn't report tokens in streaming mode. This is an API limitation.
Run the linter to see validation errors:
occ validate my-chain.yamlCommon issues: missing output_var, invalid step type, missing prompt field.