Command reference
Read from the same command tree that parses the arguments.
beck check
Typecheck, infer and verify placement, and slice the signal graph
| Argument | ||
|---|---|---|
<FILE> | FILE | |
--assert-place | NAME=TIER | Assert where something runs: `--assert-place page=client`. §3.4's assertability guardrail — a placement a test depends on should fail the build when it moves, not surface as a latency regression |
--write-lock | true \| false | Write the solved placement to `beck.lock` |
--locked | true \| false | Fail if the solved placement differs from `beck.lock` — the CI form of §3.4's stability guardrail |
--wire-compat | PREVIOUS.becki | Compare this module's contract against a previously released `.becki` and fail on a breaking change (§4.3). The check CI runs before a rolling deploy |
--breaking | true \| false | Accept the breaking changes `--wire-compat` finds. §4.3's explicit marker: a breaking release is allowed, and saying so is the point |
beck fmt
Print a program in either surface. `beck fmt` on commit normalises to `.beck` (§2.2)
| Argument | ||
|---|---|---|
<FILE> | FILE | |
--surface | py \| sexpr | |
--write | true \| false | Rewrite the file in place |
beck iface
Write the module's published signature — the `.becki` of §3.6.
Generated, checked in, and reviewed like an .mli: it is what downstream modules compile against, and the file `beck check --wire-compat` compares releases of.
| Argument | ||
|---|---|---|
<FILE> | FILE | |
-o, --out | OUT | Where to write it. Defaults to the source file with a `.becki` extension |
--stdout | true \| false | Print it instead of writing it |
beck ast
Dump the canonical AST — the notation macro authors work in (§2.7)
| Argument | ||
|---|---|---|
<FILE> | FILE | |
--expanded | true \| false | Show the tree after macro expansion rather than as written |
beck explain
Interrogate a compiler decision (§4.7)
beck explain place
Where each definition runs, and why (§4.7)
| Argument | ||
|---|---|---|
<FILE> | FILE | |
<NAME> | NAME | One definition or signal, with its candidates and their costs |
beck explain wire
The command channel's content-derived operation id (§4.3)
| Argument | ||
|---|---|---|
<FILE> | FILE |
beck explain render
Where a component renders, why, and what that puts on the wire (§5.1).
Mode A sends the browser a rendering of the state; Mode B sends it the state and renders locally. This prints which one, what decided it, what crosses, whether the client may apply a command optimistically — and, for a Mode B component, the size of the bundle it would have to download.
| Argument | ||
|---|---|---|
<FILE> | FILE |
beck explain flow
The signal graph, and what the splitter made of it — or, given a type, everywhere that type reaches and everywhere it is refused (§4.7)
| Argument | ||
|---|---|---|
<FILE> | FILE | |
<TY> | TY | A type name: `beck explain flow ApiKey` |
beck explain incremental
Which views a dataflow plan could maintain by delta, and why the rest could not (§3.8).
The analysis rather than the plan: it asks whether a *view* is built only from operations with delta rules, and `beck explain query` prints the operators the view actually compiles to. A view this reports as `recompute` may still have its collections maintained around whatever blocked it.
| Argument | ||
|---|---|---|
<FILE> | FILE | |
<VIEW> | VIEW | One view, by the name `beck explain flow` gives it |
beck explain query
The view as a dataflow plan, and what query fusion made of it (§4.7, §5.3).
Every operator, what it reads, what orders its arrangement and which side of the session cut it is on — then the rewrites that fired, and the ones that matched a rule and were refused, with the condition that refused each.
| Argument | ||
|---|---|---|
<FILE> | FILE | |
--unfused | true \| false | The plan as the decomposition produced it, before any rewrite — one operator per construct the source names, which is what the rules are applied to |
beck explain cost
What one event costs this program's view, operator by operator (§4.7).
In the engine's own units — applications, entries touched, entries copied, operators recomputed — as a function of the change `δ` and the collection `n`, so the answer is the same on every machine.
| Argument | ||
|---|---|---|
<FILE> | FILE |
beck explain sql
The read model: what an outside SQL client sees, as `create table` (§5.3).
Nothing executes this DDL. There is no table to create — a read model is the collection the fold already holds and the arrangement the view engine already maintains, projected — so this is the shape of the relations `beck run --pgwire` serves rather than a migration.
| Argument | ||
|---|---|---|
<FILE> | FILE |
beck explain deploy
The infrastructure the program's effects imply (§6.5)
| Argument | ||
|---|---|---|
<FILE> | FILE |
beck explain error
What a diagnostic code means — `beck explain error B0341`
| Argument | ||
|---|---|---|
<CODE> | CODE | The code, as it appears in the diagnostic: `B0341` |
beck graph
Every part of the program and the infrastructure it implies, and what depends on what.
The same model the dashboard draws, as text — because a graph is more useful to a tool than to an eye, and the tool is usually the point.
| Argument | ||
|---|---|---|
<FILE> | FILE | |
--json | true \| false | Emit the model as JSON instead of a table |
--types | true \| false | Include types, which are the noisiest and least often the question |
beck impact
What breaks if this changes — transitively, across code *and* infrastructure
| Argument | ||
|---|---|---|
<FILE> | FILE | |
<NAME> | NAME | A definition, a signal, a type, or a resource as `Kind/name` |
--json | true \| false |
beck test
Run the program's own `test` and `property` blocks (§21.2).
A test is a log, a command and an expectation, so this needs no network, no database and no browser: the tiers are co-located and the roles are the ones the runtime drives.
| Argument | ||
|---|---|---|
<FILE> | FILE | |
-f, --filter | FILTER | Only run tests whose name contains this |
-v, --verbose | true \| false | Say what was stubbed even when the test passed — §21.3 rule 1's hidden default, declaring itself |
--runs | RUNS | Inputs per `property` block |
--fuel | FUEL | Evaluation steps one expectation may take before it is stopped. The default is a runaway-program backstop and is right for everything written by hand. A *benchmark* is the exception — three of the fourteen in `awfy/` need more at the size their suite measures at (`docs/61` §61.3), and a backstop nothing can raise is a ceiling. |
--update | true \| false | Write what `expect page matches snapshot` renders, instead of comparing against it. The written file is reviewed like any other diff (§21.2). Nothing writes a snapshot without this flag: one that rewrote itself on disagreement would assert nothing. |
beck run
Run the program in a single process — rung 0 of the parity ladder
| Argument | ||
|---|---|---|
<FILE> | FILE | |
--addr | ADDR | |
--store | redb \| sqlite \| postgres \| memory | |
--path | PATH | |
--url | URL | |
--pgwire | ADDR | Also serve the read models on the PostgreSQL wire protocol (§5.3). Off by default, and loopback only: the port answers every question about the application's state, and it has no authentication and no transport security. Forward it rather than exposing it. |
--client-id | ID | This application, as its identity provider knows it. The **issuer** is not a flag: a program says who authenticates its clients with `identity = external(issuer="https://…")`, because §6.5 derives the cluster's egress rule from the peers a program names and a flag is not one of them. A client id is a deployment fact — staging and production register different ones — so it is here. |
--client-secret | SECRET | The client secret, for a confidential client. Read from the environment because a secret on a command line is a secret in the process table |
--redirect-uri | URL | Where the issuer sends the browser back — the redirect URI registered with it. Defaults to `http://<addr>/auth/callback`, which is what a laptop needs and what a deployment behind a gateway must override, because the address this process bound is not the address a browser typed. |
beck replay
Fold a recorded log and report the state it produces (§3.7)
| Argument | ||
|---|---|---|
<FILE> | FILE | |
--store | redb \| sqlite \| postgres \| memory | |
--path | PATH | |
--url | URL | |
--genesis | true \| false | Ignore snapshots and fold from the first event — D3's genesis-replay discipline |
--verify | true \| false | Fold twice and compare; also compare the snapshot path against a fold from genesis |
--to | TO | Stop at this position |
beck build
Emit the deployable system: the object graph and the image config (§4.1 stage 11)
| Argument | ||
|---|---|---|
<FILE> | FILE | |
--out | OUT | |
--platform | PLATFORM | Which deployment target to render for (§6.1's `Platform`): `kubernetes` or `compose` |
beck native
Compile what can be compiled to native code, and say what could not (§5.2).
The LLVM half of §5.2's dual codegen, over the scalar subset of the language: a definition whose parameters and result are `Int`, `Float` or `Bool` and whose body is arithmetic, comparison, `if`, `match` and direct calls. Everything else — anything that needs a heap, and every effect — stays with the evaluator, and this prints which went which way.
Needs `clang` on the path, or `BECK_CLANG` pointing at one.
| Argument | ||
|---|---|---|
<FILE> | FILE | |
--out | OUT | Keep the generated `.ll` and the executable here instead of in a temporary directory |
--call | CALL | Call a compiled definition and print what it answered. `beck native fib.beck --call fib --arg 30`. An argument is read as an `Int` if it looks like one and a `Float` otherwise; `true` and `false` are `Bool`s. |
--arg | ARGS |
beck sbom
The bill of materials for what `beck build` emits, as CycloneDX 1.6 JSON.
Derived from the same object graph the image config is, so the two cannot disagree about what is in the image. `beck build` writes one beside the manifests; this prints it.
| Argument | ||
|---|---|---|
<FILE> | FILE | |
-o, --out | OUT | Write it here instead of to standard output |
beck doc
Generate reference documentation — for a module, or for the language itself.
A module's page is derived from the module: signatures come from inference, effects from the row, placement from the solver, and prose from `##` doc comments. The language reference is derived from the compiler's own tables — the diagnostic codes it can emit, the predicate the placement solver evaluates, the schemes inference reads for the prelude, and this command tree.
beck doc module
One module's reference page: every published name, with its signature, effects and tier
| Argument | ||
|---|---|---|
<FILE> | FILE | |
-o, --out | OUT | Where to write it. One file per module, named after the module |
--format | md \| html \| json | |
--repo | URL | Link the page back to the repository it was generated from. HTML only |
--stdout | true \| false | Print it instead of writing it |
beck doc guide
A written guide, rendered for the published site.
The reference is derived from the compiler; a guide is written by a person and *checked* by a harness — every program in `docs/86-getting-started.md` is compiled and run by `beck-cli/tests/getting_started.rs`. This is what puts the checked file on the site instead of a second copy of it that nothing compiles.
| Argument | ||
|---|---|---|
<FILE> | FILE | The markdown file |
-o, --out | OUT | |
--link-base | URL | Rewrite relative links against this URL — the *directory* the guide lives in, in the repository it is published from. Without it they are left as written, which is right for reading the file in place and wrong for a static site, where `08-roadmap.md` is not a page. |
--repo | URL | Link the page back to the repository it was generated from |
--stdout | true \| false | Print it instead of writing it |
beck doc reference
The language reference: the error index, the command reference, the effect and tier matrix, the prelude, and the forms.
Checked in under `docs/reference/` and regenerated by this command, so a change to the compiler that changes the reference shows up in the diff rather than in a stale page.
| Argument | ||
|---|---|---|
-o, --out | OUT | |
--format | md \| html \| json | |
--repo | URL | Link every generated page back to the repository it was generated from. HTML only |
--check | true \| false | Regenerate in memory and fail if what is on disk differs. The gate CI runs |
beck bench
Measure the log against every substrate, so the store is a decision and not a habit
beck bench log
Append, read and encode, against memory, redb and — with a URL — PostgreSQL
| Argument | ||
|---|---|---|
--url | URL | The PostgreSQL log to include. Also read from `BECK_POSTGRES_URL` |
--dir | DIR | Where to put the temporary redb file |
beck lsp
Serve the Language Server Protocol on stdin and stdout (§4.6).
The same front end `beck check` runs, so an editor's squiggle and a CI failure are the same diagnostic — §4.6's "there is no separate language server implementation to drift". Not meant to be run by hand: an editor starts it and speaks JSON-RPC to it.
beck up
Bring the program up on a local cluster or host — rung 2 or 3 (§6.6)
| Argument | ||
|---|---|---|
<FILE> | FILE | |
--out | OUT | |
--dry-run | true \| false | Emit and validate the manifests without touching a cluster |
--platform | PLATFORM |