EmberNest developers
Build on EmberNest
This is the only public door into the developer wiki. Marketing pages stay on the product story. Here you get the loop as a builder: quickstart, the module catalogue, CLI, MCP, and the DNA rules the healer will not negotiate.
Quickstart
A DNA-clean app in four commands.
npm i -g @embernest/cli ember init my-app cd my-app && ember mcp serve ember scan && ember heal --dry-run
Marketing stub. The live CLI is embernest. Full walkthrough: prompt to deployed app.
Scan, heal, gate
The engineering controls behind every change.
Scan
EmberDNA reads your code against AST-accurate architecture rules, not regex guesses. You define the rules; the scan reports what breaks them.
Heal
Drift is rewritten to match your DNA spec, wrapper-first and dry-run by default. You decide which rules heal automatically and which raise a change for review.
Gate
Gates refuse a change that fails the checks you have defined. Raise a threshold and the gate holds the new line.
Catalogue
Forty modules. One architecture.
Import what the spec names. If a generation invents a forty-first package that duplicates one of these, scan fails and heal rewrites to the module below.
Runtime, app graph, generation context.
AST rule packs and spec documents.
Parser pipeline and finding objects.
Wrapper-first rewrites and dry-run diffs.
Ratcheting deploy checks.
Local commands used by humans and agents.
Model context protocol surface.
Session, invite, and workspace identity.
BYO model keys and managed credit.
Installable apps and DNA templates.
The one component kit your app is gated to.
Form primitives. No second Formik.
Schema, migrate, fixture loop.
Typed reads that heal when the schema moves.
Background work with idempotent handlers.
Durable queues the healer is allowed to touch.
Object storage with one upload path.
Transactional mail templates, gated HTML.
In-app events. One toast, one inbox.
Index definitions in DNA, not ad hoc.
Plans, usage, and seat math.
Recorded change log.
Release flags that gates can require.
Copy tables. Agents cannot invent a second.
Scan rules for names, labels, focus.
Tokens: ember, ink, line. No extra palettes.
App Router conventions the healer knows.
Internal RPC with schema-first payloads.
Edge handlers, status map, error DNA.
Realtime channels with one event envelope.
Explicit cache keys, healer-visible.
Structured logs the gate can grep.
Counters tied to DNA operations.
Secret refs. Never inline in generations.
Environment contract per deploy target.
Fixture + heal snapshot tests.
Isolated UI states for the locked kit.
In-repo wiki generator for modules.
Expand/contract schema moves.
The loop that calls scan, heal, gate.
CLI and MCP
The same verbs humans type and agents call.
Scaffold an app with DNA packs and a locked UI kit.
Run EmberDNA against the working tree. Exit non-zero on findings.
Print wrapper-first diffs. No writes.
Apply approved heals, then re-scan.
Evaluate ratchets. Used in CI and pre-deploy.
Expose the tool surface to Cursor, Claude, or your agent.
ember mcp serve publishes the loop.
Scan, heal, gate, module lookup, DNA pack load, and file-graph tools. Agents do not shell out to invent a second workflow. If a tool is not in the server, it is not in the architecture. Count sits near 700 including pack-generated helpers.
EmberDNA
Rules the healer will not skip.
One primitive per job
If a Button exists, a generation may not add Btn, PrimaryButton, or v2_button_final.
Wrapper-first heals
Prefer wrapping drifted code to match the spec over deleting user intent.
Dry-run before write
Healer emits a diff. Gates see the diff. Then disk changes.
Ratchet only up
A gate that passed cannot be weakened by a later generation.
AST, not regex
Rules match trees. String includes() is not architecture.
Secrets stay refs
Generated code may read process env names, never literals.
Routes are data
New pages register in the app graph EmberNest already scans.
Copy is owned
User-facing strings live in i18n tables the healer can merge.