Agent infrastructure engineer — I build the layer between you and the agent loop.
Columbus, Ohio · edwardkubiak.com · LinkedIn · edward.kubiak.dev@gmail.com
By day I architect and maintain production EdTech at META Solutions — 5 apps serving 4,200+ users across 900+ Ohio school districts. Nights and weekends I build agent infrastructure for Claude Code.
Focus: agent infrastructure, developer tools, and AI platform engineering.
Multi-agent systems fail in predictable ways: routing is opaque, memory bleeds across agents, policy is aspirational, and observability stops at the tool call. I build CAST to close those gaps — a local-first control plane for Claude Code — and a family of standalone, zero-LLM guardrails that fell out of building it. More at castframework.dev.
One control plane. Two observability surfaces. A family of deterministic, zero-LLM guardrails — all local-first, all recorded to a single SQLite execution log. Nothing leaves your machine, and nothing calls a model to grade itself.
| Project | What it does | Stack |
|---|---|---|
| CAST ⭐ | Local-first multi-agent control plane for Claude Code | Bash · SQLite |
| claude-code-dashboard ✨ | Web observability UI — 21+ views, live SSE streaming | React · Express |
| cast-desktop | Native macOS observability app + embedded terminal | Tauri 2 · Rust |
| attest | Zero-LLM gate: verifies a subagent's DONE vs the git delta |
Python |
| looptrip | Zero-LLM detector for multi-agent loop pathologies | Python · PyPI |
| misfire | Turns the rules your agents ignore into enforcement hooks | Python |
Deep-dives below — click any project to expand.
claude-agent-team · Bash · MIT · 23 agents · 2115 tests · 39 tables · 21 commands · 17 skills · 9 packages
A local-first control plane for Claude Code. Multi-agent systems need observability, persistence, and unforgeable policy — CAST ships all three by construction, hung off Claude Code's own lifecycle hooks and recorded in a SQLite database that two surfaces read from.
flowchart LR
SS["SessionStart"] --> R["router"]
PT["PreToolUse"] --> G["policy gate"]
SUB["SubagentStop"] --> T["telemetry"]
R --> DB[("cast.db")]
G --> DB
T --> DB
DB --> WEB["claude-code-dashboard · web"]
DB --> NAT["cast-desktop · native"]
- Hook-driven dispatch over polling. Routing, telemetry, and policy hang off lifecycle events (
SessionStart,PreToolUse,SubagentStop,Stop) — no daemon, no background loop, no missed events. - Local-first SQLite everywhere. Agent runs, routing decisions, memory, and quality gates all live in
~/.claude/cast.db, replicated off the blast radius via Litestream — the database survives a full~/.claudewipe. - Per-agent memory, not shared context. Each agent keeps scoped memory; isolation by default, coordination only when asked for.
- Hard-blocking policy gates. Force-pushes, raw
git commit, destructive shell ops — refused at the hook seam, not left to agent discipline.
# Claude Code plugin (recommended)
/plugin marketplace add ek33450505/claude-agent-team
/plugin install cast && /plugin enable cast@cast
# or: brew tap ek33450505/cast && brew install castEverything CAST records lands in cast.db. Read it on the web, or natively — same data, two delivery models.
claude-code-dashboard ✨ — web observability UI for CAST (21+ views, live SSE)
claude-code-dashboard · React 19 · TypeScript · Vite 6 · Express 5 · better-sqlite3 · Tailwind v4
A browser dashboard for everything CAST records. Reads ~/.claude/ directly and streams live session data over SSE — which agents fired, what they cost, whether the guards are holding. 21+ views across sessions, analytics, agents, hook health, a memory browser, plans, and a database explorer. No accounts, no telemetry, nothing leaves your machine.
git clone https://github.com/ek33450505/claude-code-dashboard
cd claude-code-dashboard && npm install && npm run devcast-desktop — native macOS observability app with an embedded terminal
cast-desktop · Tauri 2 · Rust · TypeScript
The same cast.db, packaged as a self-contained native app — no Node, no server to run. An embedded PTY terminal with persistent pane-to-session binding, an inline CodeMirror editor that dispatches agents on selection, 11 dashboard views over 70+ read-only loopback routes, and live per-session cost streaming ($/min plus a 4-hour projection).
brew tap ek33450505/cast-desktop && brew install cast-desktopThree standalone, deterministic, zero-LLM tools for Claude Code. None calls a model — so none adds tokens or can hallucinate its own verdict. They grade the act against ground truth on disk.
attest — catches a subagent's false DONE against the real git delta
attest · Python 3 (stdlib-only) · MIT
"DONE" is a claim, not proof. Grade the act, not the output.
A subagent reports Status: DONE after a Write that returned success but never landed on disk — a silent write-failure behind a confident claim. attest snapshots the git tree on SubagentStart, recomputes the delta on SubagentStop, and checks whether the files it claimed to change actually changed. If a claimed file never landed, it (opt-in) blocks the completion so the same agent is forced to fix it. Fail-open on every doubt; verified end-to-end against real Claude Code with captured payloads committed to the repo.
/plugin marketplace add https://github.com/ek33450505/attest
# or: brew tap ek33450505/attest && brew install attestlooptrip — trips multi-agent loops at iteration 2, not on the invoice
looptrip · Python 3 · Apache-2.0 ·
Catch the loop at iteration 2 — not on the invoice.
The failure mode that quietly burns money: agents loop — the same subagent dispatched again and again with no progress between repeats (duplicate-work, ping-pong / livelock, deadlock, non-termination), and you find out on the bill. looptrip watches a run as a stream of normalized events and trips at the second dispatch. An observer, never a gate. Works over OpenTelemetry GenAI spans or a CAST cast.db — no new instrumentation. On two real recorded runaway sessions, tripping at iteration 2 would have averted $792.96 of duplicate-work spend (looptrip proof reproduces it).
pip install looptrip
# or: brew tap ek33450505/looptrip && brew install looptripmisfire — measures which of your prose rules agents actually ignore, then enforces only those
misfire · Python 3 (stdlib-only) · Apache-2.0 ·
Prose rules are hopes. misfire ranks the ones your agents ignore — and converts only those to hooks.
Most agent guardrails are written up front and hoped to hold. misfire works backward from evidence: it reads your CLAUDE.md, .claude/rules/*.md, and your own run history, then ranks which machine-checkable prose rules your agents demonstrably ignore — by observed violation rate, with confidence thresholds and a minimum-support floor. For the violated, convertible subset only, it scaffolds a deterministic PreToolUse/PostToolUse hook for you to review — leaving safety and judgment rules as prose. An observer and recommender, never a gate: it never auto-applies a change and never writes settings.json. The ranking is byte-reproducible against a committed fixture with no database (misfire rank reproduces it).
pip install misfire
# or: brew tap ek33450505/misfire && brew install misfireBeyond the flagship, CAST has spun off a constellation of small, single-purpose tools — a read-only MCP server over the execution record, signed hash-chained session receipts, telemetry-driven dispatch prediction, persistent agent memory, a standalone install health check, a clock, and a cross-session journaling layer. Each ships independently; each installs via Homebrew.
9 Homebrew-installable packages — the full table
Core Framework
| Repo | Description | Latest | Install |
|---|---|---|---|
| claude-agent-team | Local-first multi-agent control plane — specialist agents, quality gates, hook enforcement, and the tamper-evident cast.db execution record. | brew tap ek33450505/cast && brew install cast |
Observability
| Repo | Description | Latest | Install |
|---|---|---|---|
| claude-code-dashboard | React observability UI — sessions, agent analytics, hook health, memory browser, SQLite explorer. | Clone from GitHub | |
| cast-desktop | Tauri 2 native app — embedded PTY terminal, command palette, 11 dashboard views. | brew tap ek33450505/homebrew-cast-desktop && brew install cast-desktop |
Standalone Packages
| Repo | Description | Latest | Install |
|---|---|---|---|
| cast-mcp | Read-only MCP server over the Claude Code execution record (cast.db) — dispatch decisions, incidents, cost, sessions, and full-text search as 5 MCP tools + 5 resources. stdlib-only, strictly read-only. | brew tap ek33450505/cast-mcp && brew install cast-mcp |
|
| cast-ledger | Signed, hash-chained, tamper-evident session receipts for Claude Code — SHA-256-stamped audit receipts from cast.db with --verify, plus an optional provenance hash-chain across sessions. |
brew tap ek33450505/cast-ledger && brew install cast-ledger |
|
| cast-predict | Telemetry-driven dispatch prediction for Claude Code — reads cast.db to predict a task's likely cost, suggest agents, and surface related past incidents before you run it. | brew tap ek33450505/cast-predict && brew install cast-predict |
|
| cast-memory | Persistent agent memory for Claude Code — FTS5 full-text search, weighted relevance, temporal validity, Ollama embeddings, and weekly consolidation over cast.db. | brew tap ek33450505/cast-memory && brew install cast-memory |
|
| cast-doctor | Standalone read-only health check for any Claude Code install — validates hooks, MCP config, agent frontmatter, cast.db core schema, and stale memories without the full CAST framework. | brew tap ek33450505/cast-doctor && brew install cast-doctor |
|
| cast-time | Gives Claude Code a clock — injects local time, timezone, and a semantic time-of-day bucket at every SessionStart. | brew tap ek33450505/cast-time && brew install cast-time |
|
| cast-claudes_journal | Three-hook journaling for Claude Code (Stop/SessionStart/UserPromptSubmit) — maintains Claude's perspective and working memory across sessions as Obsidian-compatible markdown in ~/Documents/Claude/. | brew tap ek33450505/homebrew-claudes-journal && brew install claudes-journal |
Bash · Python · TypeScript · React 19 · Express 5 · SQLite · BATS · Vitest · Tauri 2 · GitHub Actions · Homebrew. macOS first, Linux supported. Anthropic API + Claude Code Agent SDK.
Building in public · edward.kubiak.dev@gmail.com · edwardkubiak.com · LinkedIn



