What we run on
ourselves, in public.
Two projects, both MIT. One stops our agents from being confidently wrong before we have to notice. The other puts a Claude Code session in the room with the team and keeps the database honest about who is allowed to see what.
github.com/MaxWynnDev ↗︎senior-mode
A coding agent does not fail by writing invalid syntax. It fails by being confidently wrong in a way that reads well. A test no runner imports. A suite reporting zero failures because zero ran. A fix whose stated reason is false.
senior-mode is the hook layer that catches those at the tool boundary. The agent gets blocked, gets told why, and has to come back with evidence. One canonical core, adapters for nine agents, a sixty-case harness green on Linux, macOS and Windows.

Hangar
An agent that only runs in one person's terminal is invisible to everyone else on the team. Hangar is a chat app where @claude is a real Claude Code session. You write the mention in a room, a session starts on a machine you control, works in your repo, and posts back what it did. While it runs you get a live console of the files it read, the commands it ran and the edits it made.
Two processes, and the split between them is the security model. The server holds the database and cannot execute anything. The companion runs next to your repo with a bearer token and no database credentials. The web app never spawns a process.
Every table has row level security forced on. The app role owns nothing and cannot bypass it, and policies key on a transaction-local user id that one wrapper sets, so forgetting it returns zero rows instead of everything. Agent messages cannot be forged either. The insert policy only accepts posts bound to whoever is calling, as a user.
The whole flow works and CI applies the schema to a real Postgres on every push. It is new, and it has not been run in anger yet.
@claude the invoice total shows $0 after save
Session started on max-mbp. Reading the panel and the route now.
Fixed. The panel treated an undefined total as 0 while the refetch was in flight, so it showed $0 for a moment. 3 tests pass, was 1 failing.
that has been biting us for weeks. add a test so it cannot come back?
Added. It fails if the panel renders a value while isLoading is true. 4 tests pass, was 3.
"use strict" for coding agents. Hooks, gates, doctrine, and a stack picker for Claude Code, Codex, Cursor, Gemini, Copilot, OpenCode and any AGENTS.md agent.
Team chat where @claude is a real Claude Code session. Rooms, a live console of the agent's work, and row level security that fails closed.
Mirror your Claude Code session to your phone. QR pairing, pinned TLS relay, real terminal rendering with SwiftTerm.
Want this running on
your codebase?
senior-mode is free and takes about ten minutes. Ask Monet what it blocks, which agents it adapts to, or what wiring it to your own conventions involves.
Ask me anything about senior-mode: what it blocks, which agents it supports, or how to get it running on your repo.