Show HN: Unspaghettit – executable behavior specs for AI coding agents Unspaghettit, an open-source project by Lyriks.io, launched a local-first, MCP-native tool that creates executable behavior specifications for AI coding agents. The software provides a shared, machine-checkable design document that humans and LLMs can read and update through the Model Context Protocol, replacing stale prompts and markdown with structured features, actions, and scenarios. The tool aims to reduce drift between intent and code by making specifications the source of truth, allowing AI agents to inspect, simulate, and audit product behavior through typed tool calls rather than guessing from prose. Executable specifications for AI-assisted software development. Local-first · MCP-native · AGPL-3.0 An open-source project by Lyriks.io. AI coding works best when the human and the LLM share a stable model of the product. Without one, specs drift, prompts pile up, generated systems lose coherence, and important assumptions live only in chat history. In one line: a way to keep AI-assisted software aligned with what you actually meant. Unspaghettit gives humans and LLMs a shared, executable specification for the systems they build together: a local, machine-checkable software design document that agents can read and update through MCP the Model Context Protocol https://modelcontextprotocol.io — how AI tools like Claude, Cursor, and Gemini talk to local programs . Instead of keeping product intent in long prompts or markdown that slowly goes stale, you model the behavior as structured pieces: features, surfaces, actions, state, rules, effects, events, invariants, and scenarios. The MCP server exposes that specification to your AI coding tool, so the LLM can inspect, simulate, edit, and audit the model through typed tool calls instead of guessing from prose. You can use it in both directions: start from an idea and drive spec → code , or point an LLM at an existing codebase and build a code → spec map that makes the current behavior explicit. The specification becomes the source of truth; prompts become disposable again. Solo developers shipping with an AI assistant who want product intent to survive between chat sessions. Small teams where multiple humans and agents touch the same codebase and need a shared, versioned model of "what the product does". Technical founders / product-minded engineers who want a machine-readable spec they can hand to an LLM and get an honest report back. Anyone with an existing codebase that's drifted from its docs and wants the LLM to rebuild the spec from the code itself. Less drift between intent and code : scenarios, generated types, and implementation coverage all point back to the same spec. Existing code becomes legible : ask an LLM to reverse-map a codebase into features, actions, scenarios, and implementation coverage. AI agents get structured context : the LLM reads focused entities and actions instead of a giant prompt blob. Specs become testable : every scenario can run through the simulator before implementation exists. Implementation stays auditable : .unspa.json records where each spec entity is implemented and reports gaps. Teams keep local ownership : snapshots are plain JSON in your repo or local hub, with no hosted service required. From nothing to a running Unspaghettit workspace: npm install -g unspaghettit cd path/to/your-app unspa init unspa dashboard unspa init wires the MCP server into the AI clients you choose. If your client supports skills or custom instructions, it can install the Unspaghettit guidance there too. Restart your IDE or AI client. When it comes back up, accept the MCP server and the guidance if your client asks. Then ask your LLM something like: Using the Unspaghettit MCP, create a new project. Model the first feature and make it implementation-ready. The dashboard opens at http://localhost:3000 , so you can watch the spec take shape while the LLM works. New to this? Hit /tutorial in the dashboard for a guided walkthrough Project → Feature → Surface → Action → Parameter → Rule → Simulator, step by step . For the full list of supported AI clients, the unspa init flags, and the shared-hub layout for multi-repo setups, jump to Installation installation-clients-flags-advanced-setup . The strongest idea in here, surfaced up front: Every scenario you author is an executable assertionabout behavior. run all scenarios runs them through the deterministic simulator and reports pass/fail per assertion — a unit test suite for the spec itself, before the implementation exists. Two complementary uses of the same scenarios: Spec self-test always on . run all scenarios checks that the spec is internally consistent: every scenario's expected outcome matches what the simulator computes from the rules. Catches contradictions in product logic before a line of code is written. Code-vs-spec test preview . unspa scenarios export