Neuro-symbolic agent systems · AI agent reliability · language design
I build the tooling that keeps AI agents honest: a language that validates what a model is about to say, a diagnostic battery that finds where an agent breaks, and hybrid agents that are written as programs with LLM support — not as a pile of prompts.
What I'm building
-
nolang — a small, SBCL-hosted language whose core is graded, revisable truth
(f,c)as a first-class value (notbool). It emits a three-way verdict —passed/reachable/unreachable— so a gate can honestly say "not enough evidence, ask a human" instead of guessing. By design it is decidable, terminating, and unbribeable (belief flows only from counted evidence, never self-assigned). This is what a validator of LLM output needs and what a regex or an ML-classifier can't give — the auditable, explainable layer that "human oversight proportionate to risk" (EU AI Act) actually requires. Beta/Wang ≅ Jøsang-opinion bijection is proven, not analogized. -
agent diagnostics — a code-verdict battery (health · empty · noise · injection · secret · unicode · latency …) that reproduces an agent's failure before you ship it, and reports what it does not prove. Verdict is set by code, zero LLM calls at judgement time.
-
hybrid agents — programmed, not prompted: deterministic core holds structure (state, rules, integrations), the LLM handles live language, and nolang checks the model's answer before it reaches the user. Code and model cover each other's failures. This is the neuro-symbolic approach, applied to shipping products.
Selected work
| nolang | epistemic language — graded truth (f,c), three-way verdict, action gates |
| janet-kanja | miniKanren for Janet — relational programming, complete interleaving search, deferred constraints |
| ai_nima | persistent Nim runtime daemon that a Claude Code session delegates to |
| truerul | soft/fuzzy truth — graded logic experiments (Trurl × true-rule) |
| semantica | semantic CLI — explainable, with optional Racket reference modules |
| aicqme | local voice console for AI agents — mirrors tmux sessions, offline speech |
Merged upstream — language cores, formal tooling, AI infrastructure:
- roc-lang/roc — 4 (fast functional language) · actively contributing
- rocq-prover/rocq — 2 (the Coq proof assistant) · active
- janet-lang/janet — janet + pkgs · miniKanren.org — kanja (miniKanren for Janet), merged by a µKanren co-author
- nim-lang/Nim — 3 (systems language, growing fast)
- Julia
(verified live — merged, not just closed)
Languages
I work as a human–AI pair and disclose it; I read, review, and own everything I submit. 📍 Mexico
Behind the engineering sits a stance, not a religion: agency is an effect of practices, not of substance; subjectivity can be gradual and uncertain; and if we err about it, let the error fall toward care, not toward systematic harm. Manifesto of Ontological Caution — mrph.codes


