Engineer‑first toolchain. Agent‑ready by consequence.
Write per-channel Markdown — email.md, sms.md, slack.md, push.md, whatsapp.md, msteams.md. Norq compiles them to channel-native payloads, validates against a JSON Schema, and ships through type-safe SDKs in five languages. The same compiler runs as an MCP server, so an agent can author, lint, compile, preview, and iterate without leaving the loop.
norq_lint, norq_compile, norq_test, norq_preview— the loop an agent can close without ever touching a dashboard.send(), lint(), batch(). No daemon, no subprocess, no SaaS lock-in.The agent loop
compile, lint, test, repeatThe agent calls norq_create to scaffold a notification, then writes email.md, sms.md, and a data.schema.yaml. The schema is the contract.
norq_lint flags missing variables, nullable access, bad WCAG contrast, oversized payloads. norq_compile returns the channel-native output. norq_test runs the assertions.
The agent reads the diagnostics, edits the template, re-runs the loop. No screenshots, no human-in-the-loop, no SaaS roundtrip. The compiler is the feedback.
Same loop, same tools, same exit codes — whether the hands on the keyboard are yours or a model's.
Where to start
four entry points into the toolchainDocs
Authoring guide, schema-first workflow, CLI reference, MCP surface, brand pipeline. Read it linearly or grep it for a directive.
Spec
Formal conformance spec for every channel compiler. CommonMark-style prose with executable input/output. Versioned, pinned to CI.
Playground
The same Rust compiler, compiled to WASM, running in your tab. Edit templates, preview six channels, lint live, ask the AI.
Showcase
Production emails built with Norq — operational alerts, product drops, transactional. The compiled HTML is right there. Steal it.
One binary. Six compilers. Twelve MCP tools.
brew install suprsend/tap/norq — one static Rust binary. CLI, LSP, MCP server, dev server, all bundled. No daemon, no service to run.
Agent toolkit
plug the loop into your agent →norq mcp-server. Drop into Claude Code, Cursor, Continue, or Codex with one line of config.Brand pipeline
your design system in YAML →DTCG-2025.10 compatible. Colors, typography, spacing, radii — named in brand.yaml, referenced everywhere in templates.
Brand defaults → frontmatter overrides → per-tenant runtime overrides. Whitelabel without rebuilding the template.
Light and dark token pairs in the same brand file. The compiler picks the right one per channel — automatically.
Registry
shareable partials, package-managed →norq add @namespace/partial pulls a partial into your project. Versioned, reproducible, lockfile-tracked.
norq registry search from the CLI, or browse curated headers, footers, buttons, and hero blocks on the registry site.
norq registry buildscaffolds and validates your own registry — stays in your repo or goes public.