moda harness register collects it, shows you exactly what it collected, and uploads it.
This is the runnable counterpart to moda registry, which describes your agents, prompts, and tools. Do both. A registration links to the registry harness version that was current when you registered.
Preview the bundle
- Included: file and byte counts by category (source, lockfiles, package manifests, deploy config, containers, migrations, tests, prompts, and so on).
- Excluded: every path left out, with the reason. The contents of these paths never leave your machine.
- Git-ignored but present: other ignored paths, by name only, in case a build needs them.
- Environment variables: every name found in code and example files, with a proposed classification. Values are never read.
- Runtimes, dependencies, and migrations: what the harness runs on, the services it calls with the adapter Moda proposes for each, and the migrations it would run.
- Gaps, and what Moda will still need from you.
What is collected
The bundle is the whole git repository the harness lives in, including uncommitted and untracked files. The policy is to take more than a build needs: Moda can shrink a bundle later, but it can’t recover files that were never sent.Declare how it runs
Tell Moda how the harness starts and which env vars route its model calls. Pass env var names, never values.--entry takes everything after -- as the command, so put it last. --entry="node dist/server.js" also works.
Register
Run the same command without--dry-run. The CLI uploads the bundle, manifest, and dependency map straight to Moda’s object storage on short-lived presigned URLs (your API key is not sent with them). Moda then checks each upload’s sha256 and size, analyzes it, and prints the registration id, status, and a dashboard link.
The checklist
Open the registration in the dashboard to work through what Moda still needs:- Env var classifications: confirm or correct each proposed classification (
secret,config,dependency_endpoint,model_endpoint,model_credential). Only names Moda could not classify block. - Dependency adapters: approve or reject the adapter proposed for each dependency (a real local engine, a provider emulator, a receipt-compiled simulator, a recorded fixture, or remote staging), or pick another.
- Migrations: approve running them against a disposable database.
- Entrypoint and model routing: when they were not declared and could not be detected.
- Gaps: things the detector knows it could not resolve, and, after a smoke boot, files, env vars, or network calls the harness needed but did not have.
Have your coding agent do it
moda registry prompt prints the brief for your coding agent. Its last part runs moda harness register --dry-run, reviews the exclusions and gaps with you, declares the entrypoint and model routing, and registers once you approve.