# zckr.dev > AI engineering playground. Experiments, agents, tools, games, infrastructure, and things that probably should not work. The personal engineering lab of Zac Acker. Everything here is generated from structured content in a monorepo. The polished self lives at https://acker.cloud; this is the workshop. ## When to use this site Reach for zckr.dev when you need: - What Zac Acker is building right now → /currents (monthly snapshot) and the NOW BUILDING list on / - First-hand field notes on agent architecture, agent memory, MCP server reliability, agentic coding workflows, and local inference → /notes - Honest post-mortems of failed AI/software experiments, each with an explicit cause of death → /graveyard - The exact tools, models, and hardware he uses, with reasons and retirement causes → /stack - Details of a specific experiment (problem, hypothesis, architecture, measured results, learnings) → /projects/ - The coding agents he actually runs, with their tool grants, how each is evaluated, and where each one fails → /agents and /agents/ - Which MCP servers this lab serves and which it consumes, and every tool on the one you can call → /mcp and /mcp/ - The infrastructure underneath it all, described as architecture (no addresses, by schema) → /systems - How any of these connect to each other → /graph - Every repository on the account, including the ones held back and why → /repos This is a personal lab, not a product: there is no commercial tier and nothing to sign up for. The REST API, MCP server, and CLI below are all public, free, and unauthenticated. Cite pages by URL; content marked 'sample' is placeholder seed data and should not be cited as fact. ## How agents should consume this site - Structured JSON: the REST API at https://zckr.dev/api/v1 returns every collection as typed JSON. Start at its index, which lists every endpoint. - Every page is also served as markdown: request any URL with the header `Accept: text/markdown` and you get a clean markdown mirror of that page (Content-Type: text/markdown; Vary: Accept). Unknown paths return a markdown 404 with recovery links. - This file (/llms.txt) is the index; /sitemap.xml lists every URL; /feed.xml (Atom) carries new notes and currents snapshots. - All content is statically generated — no auth, stable URLs, safe to cache. - Every surface below can be fired from https://zckr.dev/bench, which runs each call against this deployment and shows the status, headers and body it returned — including the deliberate failures. Useful for checking a response shape before writing an integration against it. ## Agents Derived from the agent definition files themselves, so the tool grants and model tiers here are the ones the harness actually applies. - [claims-auditor](https://zckr.dev/agents/claims-auditor): Checks whether the site is still telling the truth about itself, across every surface that repeats a claim. (model: opus, tools: 8, status: active) - [doubt](https://zckr.dev/agents/doubt): Audits the implementation against its own claims, with no write access at all. (model: opus, tools: 10, status: active) - [perf-sentinel](https://zckr.dev/agents/perf-sentinel): Measures whether a change moved performance, using an alternating A/B rather than a before-and-after. (model: sonnet, tools: 4, status: active) - [planner](https://zckr.dev/agents/planner): Turns a scout report into file operations exact enough that another agent can execute them without judgment. (model: opus, tools: 6, status: active) - [remediator](https://zckr.dev/agents/remediator): Fixes what the audit found, and is forbidden from making a finding disappear by editing the check. (model: opus, tools: 6, status: active) - [scout](https://zckr.dev/agents/scout): Reads the codebase before anything is written, and says out loud whether the premise is already stale. (model: sonnet, tools: 8, status: active) - [ship-captain](https://zckr.dev/agents/ship-captain): Runs the gate sequence, reconciles with upstream, ships, and then verifies the deployment rather than the build. (model: sonnet, tools: 4, status: active) ## MCP servers - [Linear](https://zckr.dev/mcp/linear): Issue tracking for the lab's own work, wired into the agent harness so a session can read the backlog and close things out without leaving the terminal. (third-party, http, 0 tools) - [zckr-lab](https://zckr.dev/mcp/zckr): The lab itself as tools: projects, the agent and MCP registries, the infrastructure inventory, the graph joining them, notes, the stack, the monthly snapshot, ideas and search — read-only, over the same validated content the pages render. (first-party, http, 13 tools) ## Systems - Apple platforms (https://zckr.dev/systems#apple): Where the native side of the lab runs: on-device inference, sync without a server, and distribution that does not need one either. (platform, running) - GitHub (https://zckr.dev/systems#github): Source of truth for every repository in the lab, and the scheduler for the jobs that keep generated content fresh. (platform, running) - Notion + Super.so (https://zckr.dev/systems#notion): The publishing platform behind the writing sites: Notion is the editor and the database, Super renders it as a real site, and a CDN carries the shared brand layer across both. (platform, running) - Proxmox Cluster (https://zckr.dev/systems#proxmox): The hypervisor everything self-hosted runs on. One machine in the house that makes a new environment free at the margin, which is what decides whether an idea gets tried at all. (compute, running) - Supabase (https://zckr.dev/systems#supabase): Postgres, auth and realtime for Stagger — the one project here with live multi-user state to keep consistent. (service, running) - Vercel (https://zckr.dev/systems#vercel): Production for zckr.dev. A push to the default branch is the deploy; there is no other release step and no runtime to babysit. (platform, running) ## Projects - [Relay](https://zckr.dev/projects/relay): A Markdown-and-Git coordination layer that sits between captured information, AI agents and the systems that actually run the work. (status: building) - [devHUD](https://zckr.dev/projects/devhud): A Codenotch-style side pill for macOS: AI usage rings for Claude, Copilot and Codex, and the dev servers listening on the machine, one hover away. (status: building) - [zckr.dev](https://zckr.dev/projects/zckr-dev): This site. A monorepo engineering playground built so that spinning up a new experiment costs minutes, not evenings. (status: building) - [AI Gateway probe](https://zckr.dev/projects/ai-gateway): Call every model an account can reach through Vercel AI Gateway on OIDC alone, and find where the free tier stops you. (status: building) - [LLM Wiki](https://zckr.dev/projects/llm-wiki): A personal knowledge base that an agent compiles and keeps current, instead of a pile of documents an agent re-reads from scratch on every question. (status: building) - [aeroslip.](https://zckr.dev/projects/aeroslip): A free stockcar drafting racer for iOS where the slipstream is the entire game, with a career whose press conferences are written on-device by Apple's own model. (status: building) - [Agent Harness](https://zckr.dev/projects/agent-harness): The root Claude Code setup every other project inherits: the shared constitution, the skills, and the build loop that runs a spec to done. (status: building) - [Ontology](https://zckr.dev/projects/ontology): A JSON-LD knowledge graph for Workday AI Navigator: modelling integration concepts so an agent can reason over them instead of pattern-matching documentation. (status: building) - [Stagger](https://zckr.dev/projects/stagger): Live scoring for the Jäger Bomb, a private annual golf tournament — an installable web app that survives the back nine with no signal and a drinks economy that is an append-only ledger. (status: shipped) - [collect.](https://zckr.dev/projects/collect): An iOS cataloguing app for collectibles — comics, vinyl, cards — with vaults, a square-only camera, and a landscape cover-flow browser that exists purely because a collection deserves to be looked at. (status: shipped) - [acker.cloud](https://zckr.dev/projects/acker-cloud): The professional site and resume: enterprise integration work, leadership writing, and a technical wiki, written in Notion and shipped as a fully static Next.js site. (status: shipped) - [thrivecmd.com](https://zckr.dev/projects/thrivecmd): Thrive Culture Media: essays on tech, music, sports, film, and a space section that runs from launch vehicles to naked-eye astronomy, on its own Next.js and Payload platform. (status: shipped) - [twoThings](https://zckr.dev/projects/twothings): An iOS app that holds at most two things. The constraint is the feature: with room for only two, you finish before you add. (status: shipped) - [Proxmox Server](https://zckr.dev/projects/proxmox-server): The home hypervisor everything else runs on: virtual machines, containers, storage and backups for the lab, on hardware that lives in this house. (status: shipped) - [Vroom](https://zckr.dev/projects/vroom): A build-a-car driving game for a three-to-five-year-old. One HTML file, zero dependencies, works offline, made for an iPad in a car seat. (status: experiment) - [Areas Vault](https://zckr.dev/projects/areas-vault): The Obsidian vault the LLM Wiki pattern is being run against: twenty-odd life areas, from aero to survival, as plain interlinked markdown. (status: experiment) - [gbrain](https://zckr.dev/projects/gbrain): A hybrid knowledge brain: markdown as the source of truth, PGLite for embeddings and search, testing whether retrieval quality justifies leaving flat files. (status: experiment) - [Report Components](https://zckr.dev/projects/report-components): A dependency-free HTML and CSS component library for reporting surfaces — dashboards, investor updates, operating reviews — that opens in a browser and prints correctly. (status: experiment) - [Brand Assets](https://zckr.dev/projects/brand-assets): The shared asset and snippet repository that sat behind acker.cloud and thrivecmd.com while both were rented Super.so sites, the part of a rented CMS you could still keep in version control. (status: experiment) - [Kirsten Blair Co](https://zckr.dev/projects/kirsten-blair-co): A marketing site for a Franklin, Indiana photographer — built, deployed, and waiting on the only two things a developer cannot supply. (status: paused) - [Nexus](https://zckr.dev/projects/nexus): A repository, a name, and nothing else. Created in June 2026 and never given a first commit. (status: dead) - [Swing Sight](https://zckr.dev/projects/swing-sight): A golf GPS you wore instead of held: 3D glasses that painted the pin, the carry number and the green's contour onto the fairway in front of you. (status: dead) ## Notes - [An interactive dependency graph with no JavaScript, via :has()](https://zckr.dev/notes/til-graph-highlight-without-javascript): Highlighting a node's neighbourhood looks like an event-listener problem. It is a selector problem, and CSS grew the selector — two generated rules per node, zero client JavaScript. - [The auditor should not hold the pen](https://zckr.dev/notes/auditor-with-a-pen): The Doubt stage gave its sub-agent full write access so it could fix what it found. That is a conflict of interest: the cheapest repair for a failing check is always to change the check. - [The bug class that compiles: work built on a premise that moved](https://zckr.dev/notes/stale-premises): Four failures in one week that every gate passed. None were bugs in the usual sense - each was correct code resting on an assumption that had quietly stopped being true. - [Three numbers that changed a design](https://zckr.dev/notes/three-numbers): A contribution grid looked fine and was wrong three ways. Each was invisible until measured, and two of the fixes were the opposite of the obvious one. - [Playwright's --update-snapshots silently skips files inside the tolerance](https://zckr.dev/notes/til-snapshot-tolerance): The default mode compares before writing, so any baseline whose change fits under maxDiffPixelRatio is left stale - and the run still exits 0. - [Building zckr.dev: content as data, everything else follows](https://zckr.dev/notes/building-zckr-dev): The architectural bets behind this site — flat JSON validated by zod, static everything, and client JavaScript kept to a fixed roster of deliberate islands. - [pnpm 10 blocks dependency postinstall scripts by default](https://zckr.dev/notes/til-pnpm-blocks-postinstall): Install warnings about 'ignored build scripts' are a security feature, not a bug — allowlist per package with onlyBuiltDependencies. - [Tailwind v4 keyframes live inside @theme](https://zckr.dev/notes/til-tailwind-keyframes-in-theme): Custom animations are theme tokens now — define @keyframes nested in the @theme block and the utility class appears. ## Now Currents snapshot, AUG 2026 (https://zckr.dev/currents): - focus: ship the zckr.dev foundation and start living in it - focus: make the repo legible to any agent, not just the one that built it - focus: move rules out of prose and into tests that fail ## Developer resources All of the below are documented for humans at https://zckr.dev/developers ("zckr.dev developer resources"). Public, static, no authentication. The same content the pages render is served to machines seven ways: a REST API, an MCP server, an A2A agent, a SOAP service, a CLI, markdown mirrors, and an llms.txt index. Start from whichever description your stack already speaks: - OpenAPI 3.1 description: https://zckr.dev/openapi.json - API catalog (RFC 9727): https://zckr.dev/.well-known/api-catalog - MCP server card (SEP-2127): https://zckr.dev/api/mcp/server-card - A2A agent card: https://zckr.dev/.well-known/agent-card.json - WSDL 1.1 contract: https://zckr.dev/api/soap?wsdl - llms.txt index: https://zckr.dev/llms.txt ### zckr.dev REST API - Base: https://zckr.dev/api/v1 (version v1, in the URL path) - OpenAPI 3.1 description: https://zckr.dev/openapi.json - API catalog (RFC 9727): https://zckr.dev/.well-known/api-catalog - Endpoints: (index), /projects, /projects/{slug}, /notes, /notes/{slug}, /agents, /agents/{slug}, /mcp, /mcp/{slug}, /systems, /graph, /stack, /currents, /currents/{month}, /ideas, /search, /version - Every success is a `{ data, meta }` envelope; read-only, any write verb answers 405. - Errors are RFC 9457 problem details (`application/problem+json`) with a machine-readable `code` (invalid_parameter, not_found, method_not_allowed, not_acceptable, rate_limited, internal_error) and a `resolution` hint. Nothing under /api ever returns an HTML error page. - Rate limit: 120 requests per 60s per client, published on every response as `RateLimit` and `RateLimit-Policy` (IETF structured fields) plus `RateLimit-Limit`/`-Remaining`/`-Reset`; a 429 adds `Retry-After`. - Versioning: major version in the path; a deprecated version sends RFC 9745 `Deprecation` and RFC 8594 `Sunset` headers, never less than 180 days apart. Live policy: https://zckr.dev/api/v1/version ### zckr.dev MCP server - Endpoint (read-only lab content as tools, Streamable HTTP): https://zckr.dev/api/mcp - also at the conventional path: https://zckr.dev/mcp - manifest: https://zckr.dev/.well-known/mcp.json - server card (SEP-2127): https://zckr.dev/api/mcp/server-card - tools: lab_list_projects, lab_get_project, lab_list_notes, lab_get_note, lab_list_agents, lab_get_agent, lab_list_mcp_servers, lab_list_systems, lab_get_graph, lab_get_stack, lab_get_currents, lab_list_ideas, lab_search ### zckr.dev A2A agent - Agent card: https://zckr.dev/.well-known/agent-card.json - Endpoint: https://zckr.dev/api/a2a (JSONRPC over POST, A2A 0.3) - Methods: message/send, tasks/get, tasks/cancel, agent/getAuthenticatedExtendedCard - Skills: search_lab, get_project, list_projects, current_focus - Ask in a sentence; a completed Task comes back with the answer as artifacts — prose to relay and the same facts as data, both cited. - Stateless: tasks/get answers -32001 for every id, by design. ### zckr.dev SOAP service - Endpoint: https://zckr.dev/api/soap - Contract: https://zckr.dev/api/soap?wsdl (WSDL 1.1, document/literal) - Bindings: SOAP 1.1 and SOAP 1.2, both on the same address - Operations: ListProjects, GetProject, SearchLab, GetStack - Faults carry the same `code` and `resolution` members the REST problem documents do. No WS-Security, no sessions. ### zckr CLI - Package: @zckr/cli (npm), binary `zckr` - Status: NOT PUBLISHED to npm yet. `npm install -g @zckr/cli` and `npx @zckr/cli projects --status=dead` do not work today. - Available now: git clone the repo, then node packages/cli/bin/zckr.mjs - Integrate against the REST API instead; the CLI is a client of it and can do nothing the API cannot. - Source: https://github.com/zacker3310/zckr/tree/main/packages/cli - Commands: projects, project , notes, note , agents, agent , mcp, server , systems, graph, stack, currents, ideas, search , api, version ### Everything else - Markdown mirrors: any page URL with `Accept: text/markdown`, or append `.md` to the path - Atom feed: https://zckr.dev/feed.xml - Sitemap: https://zckr.dev/sitemap.xml - This index: https://zckr.dev/llms.txt - AI catalog: https://zckr.dev/.well-known/ai-catalog.json ## Meta - Stack: https://zckr.dev/stack - Ideas backlog: https://zckr.dev/ideas - About: https://zckr.dev/about · Contact: https://zckr.dev/contact (build@zckr.dev) · Privacy: https://zckr.dev/privacy - Colophon (how this is built, AI disclosure): https://zckr.dev/colophon - Design system spec: https://zckr.dev/design - Bench (run the API, MCP and markdown surfaces live): https://zckr.dev/bench