Nexa

Offline validation intelligence

A local AI assistant for Odoo and TypeScript/JavaScript that answers from a schema-validated rule corpus, checks its own output against that corpus, and never sends a line of your code anywhere.

← All products · Engineering services

< Nexa />

Preflight Checks for the Code You Are About to Write

A general-purpose model will confidently tell you to guard a value with @api.onchange. It will not mention that onchange is skipped by every import, RPC call, scheduled action and direct write — so the guard was never a guard. Nexa will not make that mistake, because "onchange is not validation" is a rule in a corpus, not a hope about a prompt.

Nexa runs entirely on your own hardware against local models. It retrieves the rules relevant to your question, answers from them, and then checks its own answer before showing it to you. No API keys, no telemetry leaving the machine, no client code in someone else's logs.

Source-Available Core • Commercial License for Production Use

git clone https://gitlab.com/dobybaxter127/nexa.git
ollama pull qwen2.5-coder:7b
nexa build

The repository is a few hundred kilobytes. The models are pulled from Ollama's own registry, not mirrored here, so you always get the current build and nothing is bundled you cannot verify.

Read every line before you pay. The rules are plain JSON against a published schema. The checks are regexes you can read. Nothing about how it reaches a verdict is hidden.

🔍 Two checks, because one is not enough

Citation checking proves every rule the model cited actually exists. Compliance checking asks the harder question: did the generated code actually obey those rules?

The second exists because of something observed during development. The model cited a real rule — "onchange is not validation" — and then wrote an onchange directly underneath it. Every citation verified. The answer was still wrong. Citation existence is not rule compliance, and a tool that only checks the first will hand you a confident, broken answer.

27 of 32 rules carry an automated check. The other five are marked as needing a human reader and return no verdict rather than a false pass. A checker that cries wolf gets ignored, so it is built not to.

Fully offline — no API keys, no egress
Schema-validated rule corpus
Citation verification on every answer
Rule-compliance checking of generated code
Patterns self-tested against their own samples
Measured false-positive rate across the corpus
Rules traceable to upstream documentation
Retrieval over your own codebase and standards
Automatic escalation to a larger local model
Escalation bounded by declared workflow topology
Retro terminal CLI with built-in diagnostics
JSONL telemetry with an optional OpenTelemetry bridge

🧭 Built on the LLM Workflow Router

When a check fails, Nexa escalates from its fast model to a larger one. That escalation is governed by LLM Workflow Router: the budget is declared topology, not a retry counter buried in a function, so a run can never loop on the slow model no matter what the checker reports.

The router's config validator earned its place immediately — it rejected Nexa's first workflow definition at load time, before any model ran, because the escalation cycle was structurally dead.

🛡️ Licensing

Nexa is source-available under the PolyForm Noncommercial License 1.0.0 — free to read, run, and evaluate, with commercial and production use reserved for licensees.

The same terms as the rest of my tooling: inspect everything, run it against your own code, and satisfy yourself it is right before any money changes hands. A commercial license covers use in client work and commercial products.

Because Nexa runs entirely on your own hardware, a license carries no per-seat metering, no usage reporting, and no dependency on my infrastructure staying up.

💼 Commercial Licensing

Commercial and client-work use is licensed per engagement rather than per seat — Nexa runs on your own hardware, so there is nothing to meter. Tell me which stack you work in and what keeps breaking, and I'll send current terms.

< Want it checking your stack? />

Tell me which stack you work in and what keeps breaking, and I'll help you get Nexa running with rules written for it.

💻 Start a conversation →