/tooling

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.

hale-checkdiagnostic
// 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.

claude mcp add hale -- hale mcp

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 --app serves a program's own API surface to an MCP host as tools.

  • dna

    The organization over a codebase. Its own page.