The reactive, local-first stack that treats security as architecture, not an afterthought.
A TypeScript monorepo, published as @azmr/* on npm. The reactive core — signals, queries, UI — is an independent branch you can use on its own. Every persistence, policy, and AI package builds on @azmr/security instead of bolting compliance on afterward.
pnpm add @azmr/coreReactive core
Signals, effects, and computed values in @azmr/core, with a chainable query builder and UI components layered on top — no dependency on the security stack, usable standalone.
Security as architecture
@azmr/security sits at the root of the persistence, policy, and AI packages — RBAC, hash-chained audit logging, and JWT are the foundation, not an add-on.
Local-first, typed end-to-end
@azmr/db persists to SQLite with parameterised queries and a tamper-evident audit log — swap in @azmr/db-supabase for hosted Postgres without changing calling code.
What ships by default
Reactivity and caching are a solved problem. Where the platform differs is what's already in the box when you also need auth, rate limiting, and an audit trail.
- RBAC via
createAccessControl, fail-closed by default - SHA-256 hash-chained audit logging via
createAuditLogger - Rate limiting and CORS composed declaratively via
createPolicyEngine - All in the same monorepo as the reactive/data layer
The honest split
@azmr/db, @azmr/db-supabase, @azmr/policycore, @azmr/ai, @azmr/cli) depends on @azmr/security, directly or transitively. The reactive core (@azmr/core, @azmr/query, @azmr/ui) has zero dependency on it — use it standalone if that's all you need.Rate limits, auth, and CORS as code
@azmr/policycore composes @azmr/security's primitives — rate limit, then auth, then CORS — declared once per route.
const engine = createPolicyEngine({ policies: { "invoices.read": { rateLimit: { options: { maxRequests: 100, windowMs: 60_000 }, keyedBy: "subject" }, auth: { resource: "invoice", action: "read" }, cors: { allowedOrigins: ["https://app.example.com"] }, }, }, accessControl,});Packages
@azmr/core
Reactive engine — signals, effects, and computed values.
@azmr/query
Chainable, data-first query builder over arrays or reactive Signals.
@azmr/ui
React components wired to reactive Signals.
@azmr/db
Secure, async SQLite persistence adapter built on better-sqlite3.
@azmr/security
Shared security utilities — validation, RBAC, JWT, audit logging, sanitisation, and env guards.
@azmr/policycore
Security policy engine — rate limits, auth, CORS, request signing, secrets, API keys, and OWASP Top 10 reporting.
@azmr/ai
AI auto-fix system with true V8 isolate sandboxing.
@azmr/cli
Command-line tooling for the Azmara Platform.
FAQ
Start with the reactive core, or the full stack.
Every package installs independently. Bring in @azmr/security when you need the audit trail.