Install
Create an environment
Scaffold a ready-made world to run against:.silo/environments/demo — seeded data, a state type, 42 tools, tasks, and the verifiers that grade them. It is ordinary TypeScript and JSON in your repo; edit any of it.
- CRM
- ERP
- Blank
--template crm — a staged sales pipeline: accounts, contacts, leads, opportunities and activity history. Good starting point, populated and small enough to read.Write an agent
Silo does not give you an agent — it gives you a world and a boundary. Your agent is an ordinary file that Silo calls with the task, the available tools, and acallTool function.
Put it wherever you like:
"type": "module" in its package.json. Named silo.agent.ts in the directory you run from, it is picked up automatically; anywhere else, point at it with --agent ./path/to/file.ts.
This example is deliberately dumb. It calls one known tool and reports the number, so you can see a run end to end before wiring up a model.
Bring Your Own Agent
The full contract, how tool errors come back, and where a real model loop plugs in.
Run it
Inspect the result
Each run leaves a directory behind:result.json shows how the answer was graded, and why:
result.json
data/ changes the correct answer and the grading follows.
trace.jsonl is the record of what actually happened:
Try a task that changes the world
TASK-004 only asks a question. TASK-002 asks for work:
0.60: some optional checks passed. A run passes only when every required check does.
state-diff.json confirms it:
state-diff.json
Silo