Skip to content
andrew.dunn.dev

Projects

Hosted on GitLab

October 2026

glab api

glab api, the raw request command in GitLab's command-line client: --field decodes JSON arrays and objects, bracketed names reach the API as the query parameters they spell, --paginate follows the Link URL as given, and mr create recognizes a title already marked Draft.

Built at GitLab

October 2026

switchyard

A ladder of Jenkins pipelines on a Java and Maven app, each converted to GitLab CI/CD at GitLab Public Sector, with a guide that puts every Jenkins construct beside the GitLab primitive that carries it and a rehearsal track for converting live.

Built in the dunn.dev estate

August 2026

varve

A local record lake over agent-session transcripts. Normalizes Claude Code, pi, and opencode session records into Parquet partitions and queries them with DuckDB. Files are canonical, the engine is disposable, and nothing leaves the machine.

Built at GitLab

July 2026

egress

A public, versioned catalog of every outbound connection a self-managed GitLab instance can make, built for administrators who have to write the firewall and allowlist rules for a controlled-egress or air-gapped environment.

Hosted on GitLab

July 2026

Evidence Factory

A worked demonstration of running a continuous ATO evidence pipeline for NIST 800-53 controls entirely inside GitLab: a policy plane injects a conformance stage no repository can edit, a released CI/CD Catalog runs the checks, and one Python driver turns each result into a merge gate and a control posture.

Built in the dunn.dev estate

July 2026

Cairn

A sealed bootc estate: db-signed UKI boot under keys from an offline ceremony, composefs-pinned root, TPM2 unlock bound to a signed PCR11 policy. Images promote only after booting for real in CI.

Built at GitLab

Project · archived

gitlab-contribution

A Claude Code plugin for contributing to GitLab projects, above all the gitlab-org/gitlab monorepo, from a machine with no GitLab Development Kit: a no-GDK contribution spine beside GitLab's own agent skills vendored at a pinned commit, until the spine merged into gitlab-simulation.

Built at GitLab

July 2026

bulkhead

Least-privilege self-managed GitLab CI runners on a fixed set of AlmaLinux hosts: rootless Podman for ordinary jobs, ephemeral libvirt VMs for jobs that need root, and the cgroups v1 versus v2 trap that decides which release to build on.

Built at GitLab

June 2026

gitlab-simulation

A Claude Code plugin for GitLab team members: file issues and merge requests against GitLab without a GDK, and reproduce self-managed GitLab on throwaway cloud VMs that delete themselves, so a change is proven on a customer's install before a maintainer sees it.

Built at GitLab

May 2026

kaniko

A pipeline-driven build of the Chainguard kaniko fork for GitLab Runner: six images per release, compiled in UBI9 and shipped from scratch, in standard and FIPS 140-3 crypto, each cosign-signed with a CycloneDX SBOM, SLSA v1.0 provenance and an OpenVEX document attached.

Built in the dunn.dev estate

May 2026

bairn

Copies a child's photos and videos out of a Famly nursery feed onto the household's own disk, with the post, the educator and the time written into each photo as EXIF and XMP. Optional upload to a self-hosted Immich.

Built in the dunn.dev estate

May 2026

Patinate

Render Strava rides over an OpenStreetMap basemap as a themed SVG plate. One Rust binary syncs activities into a SQLite cache, clips every track inside a salted hidden zone before the renderer sees it, and strips identifying attributes on the way out. Overlapping low-alpha strokes accumulate into brighter colour where you ride often, the way patina builds on metal.

Hosted on GitHub

May 2026

Sveltia Identity Translator

Translated-identity proxy for Sveltia CMS. Editors authenticate against your IdP; a single bot does the API calls; commits attribute correctly via git's author/committer split.

Built in Nomograph Labs

April 2026

jig

An agent-shape harness that points a real agent at a real CLI and counts what happens: a battery declared in agent-shape.toml, a headless runtime spawned against the fixture, and an LLM judge scoring the transcript on a 4-point scale whose top mark is a first command that was real and worked. A companion check guards the rubric against drift in the tool's own help output.

Built at GitLab

April 2026

postern

Routes events from Azure Event Grid, GCP Pub/Sub, AWS SQS, Kafka and any CloudEvents producer to GitLab pipeline triggers: one container, YAML routes, variables extracted from the payload, no database.

Built in Nomograph Labs

Project · archived

kit

A tool-registry manager that resolved developer tool versions across git-based TOML registries, generated mise configuration from the result, verified every install, and ran the bumps through CI: a scheduled sense, a rules-first respond with cheap model inference for the edge cases, and a merge gate that re-checked every checksum.

Built in Nomograph Labs

Project · archived

rune

A Rust command-line tool that managed an agent's skills, subagents and rules the way a package manager manages packages: a git registry as the source, a synced copy under each project's .claude directory, a lockfile naming what was installed, and a hook that reported drift as it happened.

Built at GitLab

April 2026

manifold

An API-only adoption profiler for self-managed GitLab: it reads activity through the REST API and renders a dashboard of adoption gaps and the enablement action that closes each one, entirely inside a customer's own network.

Built in Nomograph Labs

Project · archived

muxr

Session multiplexer for AI coding work, written in Rust over tmux. It owns the <repo>/<campaign> address across the tmux session, the campaign files on disk and the runtime's conversation, with a resume engine that snapshots a session and brings it back.

Hosted on GitLab

March 2026

yotoshelf

A self-hosted tool for making Yoto Make Your Own audio cards: record in a browser tab, draft and voice stories, print labels, publish through go-yoto, a dependency-free Go client with a dated ledger of how the API really behaves.

Built in Nomograph Labs

March 2026

kebnf

Converts the OMG's KeBNF text for KerML and SysML v2 into ANTLR4 and tree-sitter grammars from one parsed AST, recording the metamodel binding it strips to a per-rule mapping file. The tree-sitter backend writes definition and usage rules with their prefix keywords inlined, so GLR can resolve the grammar.

Built in Nomograph Labs

March 2026

sysml

A Rust toolkit that parses SysML v2 models into a knowledge graph and serves it to people, CI and language-model agents through one core: a clap CLI, a feature-gated MCP server and a skill file that teaches an agent the CLI. A study instrument for how an agent can work a large model without reading it whole.

Built in Nomograph Labs

March 2026

sysml-bench

An evaluation harness that measures whether giving a tool-augmented LLM more tools helps it answer questions about a SysML v2 model: typed tasks scored per field against published schemas, four tool sets called through a command line, public corpora of several sizes, and a pre-registered replication on an independent corpus.

Built in Nomograph Labs

March 2026

synthesist

A Rust CLI that records the process governing a body of code (what was planned, what was agreed, what phase the work is in) as an append-only claim graph an agent can query instead of inferring from a diff. Workflow state is a per-asserter JSON-LD log read back through a disposable index, under a phase machine that halts the agent at an agree step until a human approves the plan.

Built in the dunn.dev estate

February 2026

Pinboard

Ken Burns-style video generator that composites photos as vintage Polaroid snapshots on panoramic backgrounds, with smooth camera movement and music.

Built in the dunn.dev estate

February 2026

Playbill

TOML-driven video program assembler: title cards, intros, episode pass-throughs, and credits rendered into a single concatenated video with fade-to-black transitions.

Professional work

February 2026

Harness Explorer

Static analysis for the AGENTS.md, CLAUDE.md, and skills files that define how an agent behaves in a codebase. A single Go binary follows their references into a knowledge graph, scores it for redundancy, contradiction, and information density, and ranks where the next hour of harness editing saves the most tokens; whether that ranking approximates what matters is untested, since no calibration dataset exists.

Built in the dunn.dev estate

November 2025

Immutable

FROM-scratch Fedora bootc images with source-built, MOK-signed ZFS and NVIDIA kernel modules. A homelab on an earned, verifiable supply chain.