One binary: build, run, check, verify, test, bench, fmt, doc, fetch and fleet.
Everything ships in hale, with a language server and an MCP server compiled into the same binary. The same structured diagnostic reaches an editor, a CI job and a coding assistant.
The compiler answers quickly and precisely
hale check returns structured, location-precise diagnostics, fast enough to run on every keystroke and specific enough to act on without reading around them.
// you write:
locus Reader {
bus { publish Frame; }
}
// hale check:
// error: publish references unknown topic 'Frame'
// (no 'topic Frame' declaration in this file)Unknown fields, unknown topics, and methods that return a managed entity are hard errors. Those bug classes stop at build time.
In the editor
hale lsp speaks the Language Server Protocol: diagnostics as you type, hover, go to definition and completion in any editor that speaks it. hale fmt keeps one canonical style. hale doc renders API reference from /// comments, and --json gives the same for machines.
For a coding assistant
hale mcp exposes the toolchain over the Model Context Protocol: hale_check, hale_build, hale_run, hale_fmt, hale_fetch and hale_docs_search, for any MCP host, including ones without a shell.
The documentation, for machines
The documentation ships in forms built to be read programmatically: llms.txt is the index and llms-full.txt is the full specification corpus. Two bundled context packs put the essentials, the spec and the real-world gotchas in one file. The slim pack is about 14k tokens.
Rules files
Rules files distilled from the style guide, the two-channel discipline, the pattern catalog and the gotchas, in the formats coding tools pick up on their own.
Every subcommand
- build · run
One static binary from a file or a project; run it in place.
- check · verify
The whole-project check, and the stricter gate that turns every advisory into a failure.
- test · bench
Tests and benchmarks from the same tree, with the same diagnostics.
- fmt · doc
One canonical style; reference rendered from
///comments, as a page or as JSON. - fetch
Vendor a pinned git dependency into the tree.
- fleet
Compose the topology artifacts of separately built binaries and check law across them.
- describe · call · watch · admin main
Clients for a served API surface: read its description, call a member, follow a stream, open a dashboard. They need no code from the program.
- lsp · mcp
The language server and the MCP server, in the same binary.
hale mcp --appserves a program's own API surface to an MCP host as tools. - dna
The organization over a codebase. Its own page.