colin run command compiles your project. It discovers documents in your models/ directory, resolves dependencies between them, and produces compiled output in output/. During compilation, Colin invokes LLM calls as needed, caches their results, and tracks changes to enable incremental rebuilds.
A compilation run involves several phases: discovery finds all documents, graph building extracts dependency edges from ref() calls, topological sorting determines compilation order, and finally each document compiles with its dependencies already available.
Basic Usage
From your project directory, run:Reading the Output
Colin’s display uses icons to indicate operation status and type:| Icon | Meaning |
|---|---|
✓ | Compiled successfully |
» | Served from cache |
← | Reference or MCP fetch |
→ | File output written |
✗ | Failed |
» for an LLM operation, Colin reused a cached result from a previous run. This happens when the input to the LLM call hasn’t changed. The ← icon indicates a reference was resolved, either from another document or an MCP resource.
A typical run where some documents were cached:
context/team-health.md had a cached LLM result, while skills/status-agent.md made a fresh LLM call.
Flags
No Cache
The--no-cache flag ignores cached results and recompiles everything:
Quiet Mode
The-q or --quiet flag suppresses progress output:
Output Override
The--output flag overrides the output directory from colin.toml:
Ephemeral Mode
The--ephemeral flag prevents Colin from writing to the .colin/ directory:
output/ directory. The manifest and compiled artifacts in .colin/compiled/ are not updated. The run is “ephemeral” in that it leaves no trace in the build system.
This is useful for:
- Testing: Run compilations without leaving state behind
- CI pipelines: Read-only builds that don’t pollute the cache
- One-off compilations: Quick runs without persisting manifest or artifacts
- Templates: Generate output without leaving traces in the source directory
--no-cache:
.colin/, no writing to .colin/, but still produces output.
| Flags | Reads .colin/ | Writes .colin/ | Writes output/ |
|---|---|---|---|
| (default) | ✓ | ✓ | ✓ |
--no-cache | ✗ | ✓ | ✓ |
--ephemeral | ✓ | ✗ | ✓ |
--no-cache --ephemeral | ✗ | ✗ | ✓ |
No Clean
By default, Colin removes stale files after compilation. The--no-clean flag skips this:
--no-clean when you want to preserve stale files temporarily or when running quick iterations where cleanup isn’t needed.
Updating Outputs
Thecolin update command updates an output directory from its source project:
--var overrides in the output manifest. The --update flag uses this information to recompile from the original source.
This is useful for:
- Distributed skills: Update installed skills without tracking their source locations
- Team workflows: Developers can update outputs in shared locations
colin update command:
- Reads
.colin-manifest.jsonfrom the specified directory (or current directory) - Uses stored
--varoverrides by default (override again with--var) - Supports
--no-cache,--ephemeral,--quiet, and--no-bannerflags
Incremental Builds
Colin tracks changes to enable efficient incremental compilation. When you runcolin run, it compares each document’s current state against what was recorded in the manifest from the last run.
A document recompiles when:
- Its source changed - The file content differs from the recorded hash
- A dependency changed - Any document it references was recompiled this run
- It’s new - No record exists in the manifest
output/.
Change Propagation
When a document changes, Colin recompiles all documents that depend on it, transitively. Consider this dependency chain:company.md, all three documents recompile because changes propagate downstream through the dependency graph. If you only modify skills/support-agent.md, only that document recompiles since nothing depends on it.
The manifest tracks which refs each document evaluated during its last compilation. Colin uses this to trace the downstream closure of affected documents.
Compilation Order
Colin compiles documents in topological order based on their dependencies. Documents with no dependencies compile first, then documents whose dependencies are complete, and so on. Within each level of the dependency graph, documents compile in parallel. A project with this structure:- Level 1:
a.md,b.md,c.md(in parallel) - Level 2:
d.md - Level 3:
e.md