Unter der Haube
Anvil Coder ist eine hexagonal aufgebaute Anwendung aus zwei Deployables: einem Coordinator, der den Ausführungsgraphen hält, und Workern, die die atomaren Arbeitsschritte abarbeiten — die Worker-Seite ist waagerecht ausgelegt und nimmt beliebig viele nebeneinander auf. Verbunden sind sie über NATS JetStream, eine dauerhafte Warteschlange — kein Arbeitsschritt geht verloren, wenn ein Worker ausfällt.
Die fachliche Logik kennt weder Datenbank noch Sprachmodell noch Warteschlange. Sie spricht ausschliesslich über Ports; die Anbindungen liegen aussen als Adapter. Das klingt nach Lehrbuch und hat einen sehr praktischen Grund: das Sprachmodell ist austauschbar, ohne dass die Fachlogik davon erfährt.
Für einen Käufer heisst das: die Abhängigkeit von einem einzelnen Anbieter liegt an einer Stelle, nicht verteilt über die Codebasis.
Waagerecht zu skalieren ist eine Eigenschaft des Zuschnitts, keine Aussage über den heutigen Betrieb: solange ein Worker seinen Arbeitsbaum im eigenen Pod hält, fährt der betriebene Dienst genau einen. Mehr Durchsatz heisst deshalb zuerst, den Arbeitsbaum aus dem Pod zu lösen — und erst danach die Obergrenze anzuheben.
Java 25 und Spring Boot 4 bilden den Fachkern, Angular mit Signals das Cockpit und Astro diesen statisch ausgelieferten Auftritt. PostgreSQL hält Projekte und Konfiguration, MongoDB den append-only Audit-Verlauf, Redis kann den verteilten Laufzustand übernehmen und NATS JetStream ist die dauerhafte Warteschlange zwischen Coordinator und Worker. Kubernetes und Flux CD liefern den betriebenen Dienst aus; Keycloak, nginx, Prometheus, Grafana und Tempo decken Identität, Edge und Observability ab.
Die Git-Integration läuft über JGit. Verbunden wird über die bestätigte GitHub-App-Installation der Organisation, für GitLab über OAuth 2.0 mit PKCE (heute gitlab.com), für Bitbucket Cloud über OAuth 2.0. Die KI-Schicht kapselt Anthropic, Claude CLI beziehungsweise agent-service und OpenAI-kompatible Anbieter wie OpenAI, Groq, Gemini, Mistral und Ollama hinter einem gemeinsamen Port. Drei optionale, read-only MCP-Server liefern YouTrack-, GitHub- und kuratierten Dokumentationskontext tenant-isoliert an den Agenten.
Die öffentliche Dokumentation enthält die freigegebenen Konzepte und Anleitungen; interne Betriebs-Runbooks und Zugangsdaten werden nicht veröffentlicht.
Phasen laufen nacheinander und haben Gates — REQUIREMENTS, ARCHITECTURE, IMPLEMENTATION, RECONCILIATION, TEST, VERIFY, DOCUMENTATION, CONSISTENCY; zwei davon sind zuschaltbar (RECONCILIATION und VERIFY) — im Auslieferungszustand aus, im betriebenen Dienst eingeschaltet.TaskSlices laufen innerhalb einer Phase parallel.
Diese Trennung ist der Kern: die Reihenfolge bleibt gewahrt, wo sie fachlich zählt, und fällt weg, wo sie nur bremst. Ein Projekt entsteht nicht schneller, weil jemand schneller tippt, sondern weil mehr gleichzeitig entsteht.
Ein Slice gilt erst als erledigt, wenn sein Ergebnis committet ist. Fällt ein Worker vorher aus, wird der Slice erneut zugestellt. Bleibt ein Slice unbestätigt liegen, zählt er als Bedarf, und ein Worker wird nachgezogen (zuschaltbar).
Die Lesezugriffe laufen über einen eigenen Betriebsmodus desselben Images. Ein Neustart des Coordinators nimmt deshalb niemandem die Sicht auf laufende Aufträge.