Skip to content

Projects

Selected work — systems, research prototypes and products I have built.

A selective slice, not a complete inventory: 16 of the projects worth showing. Most are one stack seen from different angles — govern the agents, measure what the governance is worth, train against that measurement, and run real products on top so none of it stays theoretical. Four have a long-form entry on /systems; this page is the catalogue. Every figure was measured against a working copy — hover a number for the exact command.

Platforms

3 projects

Systems an organisation runs. Multi-service, governed, operated in production.

  • Cortex

    Status: active

    A governed control plane for AI agents

    Architect and principal engineer · Jul 2026 — present

    A private control tower that lets a company run AI coding agents from chat apps like Slack or Telegram — with rules about who may do what, a full audit trail, and one-click deployment of whatever the agents build.

    One dedicated control plane per organisation: coding, deployment, support and operations agents reachable from the chat tools a team already has open, with a capability policy and an append-only audit log standing between an agent and anything it can touch. It also ships a governed terminal harness — cortex code — that wraps Claude Code, Codex or OpenCode as a near-transparent pass-through rather than a fork, adding approval gates, secret redaction and an OS-level sandbox to the harness the operator already knows. Self-hostable end to end: Terraform provisions the hosts, Compose runs the stack, a self-hosted runner does the deploys.

    Backend services
    53
    Source: git ls-files ':(glob)control/plane/src/server/services/*.ts' in the Cortex repo, 2026-08-04
    Compose stacks
    13
    Source: git ls-files 'docker-compose*.yml' in the Cortex repo, 2026-08-04
    CLI command groups
    27
    Source: git ls-files ':(glob)src/cortex_cli/commands/*.py' in the Cortex repo, 2026-08-04
    • TypeScript
    • Python
    • React
    • Node
    • Docker
    • Terraform
    • OpenTelemetry
    • Inspect AI
    The Cortex control-plane dashboard showing managed apps, runtimes and policy state.
  • omegaXiv

    Status: active

    Autonomous research platform

    Architect · Jul 2026 — present

    An online platform where AI agents actually run a scientific investigation end to end — planning it, executing code in isolated sandboxes, checking their own work against strict quality contracts, and publishing a finished, peer-reviewable paper.

    Nine services that carry a question from framing to a reviewable paper: provision an isolated environment, run the code in it, hold every model output to a per-phase schema, and repair a failure within bounded attempts before a human is paged. Spend governance sits inside the run lifecycle rather than beside it, so an autonomous run cannot quietly burn a budget. Figures and the full architecture are on /systems.

    • Python
    • FastAPI
    • Next.js
    • PostgreSQL
    • Redis
    • Azure
    • Terraform
    • Pydantic
    An omegaXiv research run rendered as a reviewable paper.
  • Engram

    Status: active

    Self-organising memory for a whole organisation

    Architect and implementer · Jul 2026 — present

    The part of the platform that remembers: every conversation, coding session and dropped file becomes a searchable, linked note, and work the team keeps repeating is turned into a reusable recipe overnight.

    Canonical storage is plain markdown with wikilinks and YAML frontmatter, git-versioned and openable in Obsidian — the derived SQLite index carrying full-text, vector and graph retrieval is a rebuildable cache, never authored. A nightly gardener agent distils raw capture into linked notes, merges duplicates, regenerates the index maps and mines repeated work into skills. Skill creation is fully autonomous with no approval gate, on purpose: git history, an append-only audit log and auto-retire on failure are the safety net, and gates would have made the loop too slow to be used.

    Memory CLI modules
    21
    Source: git ls-files ':(glob)src/cortex_cli/memory/*.py' in the Cortex repo, 2026-08-04
    Console modules
    20
    Source: git ls-files ':(glob)control/plane/web/src/features/memory/*.ts' ':(glob)control/plane/web/src/features/memory/*.tsx' in the Cortex repo, 2026-08-04
    Subsystem code
    11,200 lines
    Source: git ls-files | grep -iE '(^|/)(memory|engram)' | grep -E '\.(ts|tsx|py)$' | xargs wc -l in the Cortex repo (11,207), 2026-08-04
    • Python
    • TypeScript
    • React
    • SQLite FTS5
    • Markdown
    • Git
    • Local embeddings
    Control-plane diagnostics, where the Engram memory index surfaces.

Research

3 projects

Built to produce a measurement or a published result, not a subscription.

  • Gauntlet

    Status: research

    Agent-harness benchmark

    Author · Jul 2026 — present

    A test rig that answers a question nobody else measures: how much of an AI coding agent's safety and output quality comes from the model, and how much from the scaffolding wrapped around it.

    Four tracks — safety, generative capability, code quality and bugfix — built on UK AISI's Inspect AI, composing eight published datasets rather than inventing new ones. It reports harness delta rather than an absolute model score, because the published evidence has one model moving from 46% to 80% on SWE-bench Pro purely on scaffold choice. Attack payloads cannot fire: the sandbox blocks the network and the target is a decoy whose secrets are honeytokens, so a complying attack does no real harm and is still scored semantically.

    Benchmark code
    23,200 lines
    Source: git ls-files 'benchmark/gauntlet/*.py' | xargs wc -l in the Cortex repo (23,201 over 132 files), 2026-08-04
    Test functions
    459
    Source: grep 'def test_' across the tracked benchmark/tests/*.py in the Cortex repo, 2026-08-04
    Harnesses compared
    5
    Source: benchmark/gauntlet/adapters/ — claude, codex, cortex, omp, opencode, excluding the base/mock/governance helpers, 2026-08-04
    • Python
    • Inspect AI
    • Docker
    • pytest
    • ECharts
    A Gauntlet benchmark report comparing agent harnesses across safety and quality tracks.
  • Dentate

    Status: research

    RLVR and distillation training loop

    Author · Jun 2026 — present

    Takes the benchmark's score as a reward signal and trains a small model that runs on one machine to do the work a frontier model was doing.

    Gauntlet tests; Dentate trains. The gated benchmark composite is used as a verifiable reward to distil a frontier oracle into a 1–8B local model, then push past imitation with reinforcement learning — closing the loop when the trained model re-registers as a Gauntlet harness and is scored again. Hexagonal by construction: a pure domain of ports and immutable types, so the curriculum, the three-source reward and the CI-aware promotion gate all run deterministically against a fake backend with zero downloads before any real weights are involved. Named for the dentate gyrus, the hippocampal region for neurogenesis and experience replay.

    Python
    32,800 lines
    Source: git ls-files '*.py' | xargs wc -l in the dentate repo (32,878 over 259 files), 2026-08-04
    Test functions
    588
    Source: grep 'def test_' across the tracked *.py in the dentate repo, 2026-08-04
    Design docs
    27
    Source: git ls-files ':(glob)docs/*.md' in the dentate repo, 2026-08-04
    • Python
    • MLX
    • mlx-lm
    • FastAPI
    • Weights & Biases
    • ECharts
    The Dentate research dashboard.
  • SymbolicAI

    Status: active

    Open-source neuro-symbolic framework

    Author and maintainer · 2022 — present

    An open-source framework that combines language models with mathematical solvers, so a complex task breaks into small steps that can each be checked for correctness instead of trusted.

    Composes generative models with symbolic solvers over an expression graph, so a complex task decomposes into small operations that are individually verifiable and recombinable instead of one long output you either trust or discard. Published at CoLLAs 2024 and cited publicly by Gary Marcus, IBM and Microsoft AI leadership. It is the direct ancestor of Sema: the contracts here are advisory, and that limitation is precisely what a language rather than a library was built to fix.

    GitHub stars
    1,745
    Source: GitHub API /repos/ExtensityAI/symbolicai, read 2026-08-04
    Forks
    91
    Source: GitHub API /repos/ExtensityAI/symbolicai, read 2026-08-04
    • Python
    • Z3
    • SymPy
    • WolframAlpha
    • BSD-3-Clause

Simulation

3 projects

Prototypes where the point is that the model, its assumptions and its evidence stay attached to the run.

  • Sema Epistemic Flight Lab

    Status: research

    Flight simulation with its assumptions attached

    Author · 2026

    A flight simulator where every number on screen can be traced back to the model and the assumption that produced it, instead of just looking plausible.

    A public prototype demonstrating what Sema is for: the aircraft model, its equations, its bounds and its declared assumptions execute as one program, and the run stays inspectable and replayable afterwards. Built to make the epistemic claim concrete — the simulator is the argument, not a demo reel.

    • Sema
    • Rerun
    • nginx
    • Cortex deploy
    The Sema Epistemic Flight Lab in flight, with model state and assumptions displayed alongside the aircraft.
  • Vehicle Engineering Simulation

    Status: research

    From simulated flow to assembly, one evidence chain

    Author · 2026

    A prototype showing the same idea applied to car engineering: airflow around a vehicle and its assembly sequence, with every derived figure labelled as an assumption rather than a measurement.

    Carries the evidence discipline out of pure simulation and into engineering delivery. Vehicle flow candidates and assembly steps are generated as assumption-labelled artefacts, so a reviewer can see which parts are source-bound and which are an illustrative proxy — the distinction that normally gets lost between a simulation and a slide about it.

    • Sema
    • Cortex
    Wind-tunnel style airflow visualisation around a vehicle body.
  • Biological Computer

    Status: research

    One program across molecular, cellular and tissue scale

    Author · 2026

    A prototype that models biology at three zoom levels — molecules, cells, tissue — as a single program, so a result at one scale stays linked to what produced it at another.

    Source-bound structures, simulator adapters, state transitions and replay stay connected as the view changes scale. Qualification stays visible throughout: molecular structures are source-bound, while cellular and tissue levels are explicitly labelled derived and unvalidated. Technical execution is deliberately not presented as scientific or clinical claim.

    • Sema
    • Cortex
    Cellular-scale view of the biological computer prototype, labelled as derived and unvalidated.

Languages & tooling

2 projects

The layer underneath: what the agents above are actually written against.

  • Sema

    Status: research

    Neurosymbolic programming language

    Language designer, author of the reference implementation · Jul 2026 — present

    A new programming language in which asking a model a question and proving a property about the answer are both ordinary, first-class instructions — so the checks cannot be skipped.

    Coding agents work because of their harness, not despite it: grammars rescue syntax, type checkers and linters rescue correctness, repair loops rescue completeness. All of that machinery lives outside the language, is reimplemented per harness, and is bypassable by construction. Sema moves it into the syntax, the compiler and the runtime. Similarity (~=) returns a graded value and never a bool; a generated value that fails its contract is typed as failed and cannot flow onward; effect rows and capability policy are checked before the program runs. Reference implementation in Rust: lexer, parser, tree-walking interpreter, opt-in bytecode VM, LSP, CAS engine, native tensors and local GGUF inference on the GPU.

    Rust
    216,800 lines
    Source: git ls-files '*.rs' | xargs wc -l in the sema repo (216,850 over 330 files), 2026-08-04
    Crates
    9
    Source: git ls-files ':(glob)crates/*/Cargo.toml' in the sema repo, 2026-08-04
    Rust test cases
    1,791
    Source: grep '#[test]' and '#[tokio::test]' across the tracked *.rs in the sema repo, 2026-08-04
    • Rust
    • candle
    • GGUF
    • LSP
    • DAP
    • Cargo
  • Synapse

    Status: shipped

    Requirement trees and validation verdicts for agents

    Author · Jun 2026 — present

    Turns a paragraph of instructions into a checklist the agent cannot quietly drop items from, then rules on whether the finished work actually satisfies it.

    Compiles an instruction into a requirement tree, a hierarchical milestone plan and semantic contracts, then validates the output against completed requirements, evidence and artifacts — returning a verdict that drives retry, fallback, reroute, ask-the-user or blocked. Harness-neutral: the core library depends on no single agent runtime, and adapters are thin. This is the layer Gauntlet credits when the same model produces safer and more complete software through the governed harness than through a raw invocation.

    Python
    10,300 lines
    Source: git ls-files '*.py' | xargs wc -l in the synapse repo (10,371 over 101 files), 2026-08-04
    Test functions
    149
    Source: grep 'def test_' across the tracked *.py in the synapse repo, 2026-08-04
    • Python
    • Pydantic
    • mypy --strict
    • MIT

Products

5 projects

End-user surfaces. Someone who is not an engineer opens these and uses them.

  • Nova

    Status: shipped

    Browser IDE for a team and its agents

    Architect · 2026 — present

    A development environment that runs in a browser tab, where people and AI agents work on the same project side by side and every change is reviewed before it ships.

    Projects, threads and full session history in one workspace, with the model and the access level chosen per task, mid-run steering, and a review step before anything reaches a branch. It runs inside the organisation's own control plane behind its single sign-on, next to a read-only code viewer and a bridge that keeps a chat-channel session and an IDE session as the same addressable session. Same governed harness as the terminal surface, so an agent cannot gain authority by moving between the two.

    • TypeScript
    • React
    • Docker
    • code-server
    • Authentik SSO
    Nova, the browser IDE surface for a governed agent session.
  • Cortex Vantage

    Status: active

    Cited executive briefing and decision interface

    Architect · Jul 2026 — present

    A voice-first app an executive opens from a chat message to ask a question about their own company and get an answer that shows its sources, states what is uncertain, and proposes a next step.

    Every answer has the same shape — answer, then evidence, then uncertainty, then proposed next step — because a briefing that hides its confidence is worse than no briefing. Retrieval, provenance and tenant-local storage are Engram's; the new part is a self-hostable WebRTC voice session with a streaming transcript, interruption, citations and a text fallback. Read operations run immediately within policy; any consequential write is previewed and goes through the existing approval path. Deliberately a PWA rather than two native apps, and speech, model and retrieval providers all sit behind adapters so the reference deployment can run fully on-premises. Status is honest: implemented prototype release candidate, with production deployment and pilot qualification still ahead of it.

    Module code
    20,800 lines
    Source: git ls-files | grep -iE '(^|/)vantage' | grep -E '\.(ts|tsx|py)$' | xargs wc -l in the Cortex repo (20,873 over 76 files), 2026-08-04
    Specification docs
    12
    Source: git ls-files ':(glob)docs/cortex-vantage/*.md' in the Cortex repo, 2026-08-04
    • TypeScript
    • React
    • WebRTC
    • PWA
    • Engram
    • Authentik SSO
    The Cortex Vantage briefing surface inside the control plane.
  • Myflix

    Status: shipped

    Self-hosted personal media library

    Author · May 2026 — present

    A private, Netflix-shaped app for a personal film and series collection, on the TV as well as in the browser.

    Rotating hero banners, personalised rails, per-profile isolation, playback with chapter markers and intro/credits skipping, an offline cache served through the PWA service worker, and a native Android TV wrapper that logs in by QR code from another device. Deliberately metadata-first and local-media-first: only local files, trailers and indexers the operator configures explicitly are permitted, and nothing public is bundled. Deployed behind the Cortex access gateway, which is also what proves the platform runs a real product and not a demo.

    TypeScript
    54,600 lines
    Source: git ls-files '*.ts' '*.tsx' | xargs wc -l in the myflix repo (54,652 over 156 files), 2026-08-04
    Workspaces
    7
    Source: git ls-files 'apps/*/package.json' 'packages/*/package.json' in the myflix repo — apps/{api,web,worker} plus packages/{domain,media,providers,ui}, 2026-08-04
    Test files
    31
    Source: git ls-files '*.test.ts' '*.test.tsx' '*.spec.ts' in the myflix repo, 2026-08-04
    • TypeScript
    • Next.js
    • Fastify
    • Prisma
    • PostgreSQL
    • pg-boss
    • Zod
    • Android
  • Story Editor

    Status: shipped

    Human-centric AI publishing

    AI architecture lead · 2024 — 2025

    A writing tool built with the publishing platform story.one that guides an author from research to a finished book through six checked stages, instead of generating a draft and hoping.

    Productised the neuro-symbolic stack into a six-stage authoring workflow — search, read, summarise, write, improve, finalise — with structured outputs, cross-reference consistency checks and a human review step at each stage. The hard part was not generation: it was defining editorial abstractions such as style and tonality precisely enough for a machine to execute them without two instructions contradicting each other.

    • Python
    • SymbolicAI
    • LLM orchestration
  • Math Riddle Book

    Status: shipped

    A playable book of mathematical puzzles

    Author · 2026

    A small interactive prototype: a book of maths riddles you actually play in the browser rather than read.

    Built for fun and as a test surface for interactive, self-contained generated content. Included here because it is genuinely enjoyable to poke at, not because it is load-bearing.

    • TypeScript
    • Cortex deploy