Railshot
AI deployment & operations platform
Eine lokal gebaute Web-App in vorbereitete Cloud- und On-Premises-Umgebungen deployen und dann betreiben.
Eine KI-Plattform für Deployment und Betrieb, die eine lokal gebaute Web-App in vorbereitete Cloud- oder On-Premises-Umgebungen bringt und weiter betreibt.
Railshot vocabulary
- intake
- checks
- repair
- publish
- rollout
- route
- probe
- source commit
- digest
- binding
- unknown
- resume
- observation
Intake: deploy_repository · deploy_local_project · OAUTH MCP · Idempotency-Key · IDEMPOTENCY_CONFLICT · 202 ACCEPTED · EXECUTOR_BUSY · CAPACITY_EXCEEDED · maxConcurrentDeployments · workflow_dispatch · TARGET ALLOWLIST · reconciliation_required · CI_DISPATCH_UNCONFIRMEDChecks: package.policy · package.spec · source.quality · image.build · image.runtime · image.scan · GATE_ORDER · verdict.json · release_eligible · GATE VERDICT · SECRET SCAN · --cap-drop=ALL · source_change_allowed · verify_imagesAI Repair: GATE VERDICT · FIXABLE · give_up · PROMPT INJECTION · FAILURE SIGNATURE · REPAIR_SCOPE · MAX_REPAIR_ATTEMPTS · claude-agent-sdk · openai-codex · fixer · lessons.md · source_change_allowed · SDK_OUTCOME_UNKNOWNPublish: release_eligible · GHCR · images.json · EXACT TESTED BUNDLE · GITHUB-HOSTED RELEASE · published · publication_unverified · MANIFEST INSPECT · REGISTRY_VISIBILITY · publish-journal · railshot-release · containerd-snapshotter · images.tar · handoff.jsonRollout: bridge.py · workload.json · CONFIG GIT · pushing · REMOTE READBACK · ARGO CD · Synced · Healthy · targetRevision · sync_requested · NO PRUNE, NO FORCE · NetworkPolicy · readinessProbe · observed_images · NEVER BLINDLY RETRYPublic Route: routing · SHARED ALB · aws_lb_listener_rule · aws_lb_target_group · aws_route53_record · NodePort · LISTENER OWNERSHIP · GCP_ROUTE_APPLY_TIMEOUT · GCP_CERTIFICATE_DNS_FAILED · WireGuardHealth Probe: public_probe · site_probe · railshot-health/1 · NO PROXY, NO REDIRECT · expected_json · HTTPS 200 · verified_at · public_http · health_path · readinessProbe · probe_successSource Commit: workflow_dispatch · targetRevision · Railshot-Request · Railshot-Target · source_commit · source_parent · force: false · source_digest · snapshot.json · GITHUB_SHA · PLATFORM_REF · harness_sha256 · SUBMITTED SOURCE CHANGED · source_preparedImage Digest: GHCR · images.json · MANIFEST INSPECT · source_digest · IMMUTABLE GHCR DIGEST · images_sha256 · observed_images · PULL BY DIGEST · imagePullSecrets · containerd-snapshotter · RESUME_PUBLICATION_CHANGED · verify_images · images.tarRun Binding: Idempotency-Key · published · Railshot-Request · Railshot-Target · handoff.json · producer_attempt · bundle_artifact_id · run_id · state.bindings · CI_BINDING_MISMATCH · DEPLOYMENT BINDING CONFLICT · config_sha256 · TARGET ALLOWLIST · registered_applicationUnknown Outcome: publication_unverified · pushing · GCP_ROUTE_APPLY_TIMEOUT · outcome_unknown · CD_RECONCILE_REQUIRED · reconciliation_required · CD_OUTCOME_UNKNOWN · SDK_OUTCOME_UNKNOWN · unknown_timeout · CI_DISPATCH_UNCONFIRMED · NEVER BLINDLY RETRY · after_reconcile · reconcile_remote · CI_DISPATCH_NOT_IDENTIFIED · READ-ONLY OBSERVEResume: publish-journal · source_parent · RESUME_PUBLICATION_CHANGED · --resume · state.sqlite3 · resumePrepared · findDeployment · recoverDispatch · source_prepared · CI_DISPATCH_NOT_IDENTIFIED · resume_count · SAME WORKFLOW RUN · INTERRUPTEDObservation: observationRetry · next_retry_at · consecutive_failures · no_data · stale · collection_failed · NOT A SUCCESS GATE · probe_success · PROMETHEUS · BLACKBOX EXPORTER · READ-ONLY OBSERVE
Die Weboberfläche und ein eigener Agent fordern das Deployment über dieselbe Produkt-API an.
Das Produkt von der angenommenen Deployment-Anfrage über CI-Prüfungen und Image-Veröffentlichung bis zu Git-Konfiguration und Argo-CD-Rollout auf einem registrierten Ziel und der Verifikation des öffentlichen HTTPS. Erfolg wird nur mit angewandter Revision und öffentlicher Prüfung aufgezeichnet; ein Ergebnis, das nicht bekannt sein kann, bleibt unknown.
Ein Projekt wird über die Weboberfläche oder von einem eigenen, per MCP verbundenen KI-Agenten eingereicht, und die Plattform führt es durch Vorbereitung der Deployment-Dateien, Reparatur von Fehlschlägen, Image-Veröffentlichung, Rollout in die Umgebung und Verifikation der öffentlichen URL; nach dem Deployment zeigt dieselbe Oberfläche Verlauf und Logs und verwaltet Updates, Stopps, Wiederaufnahmen und Löschungen. Ein Teamprojekt.
Entwicklungszeitraum des Events von September 28, 2026 bis October 4, 2026
Die Weboberfläche und der MCP-Server, die während des Hackathons gebaut wurden. Das Remote-MCP meldet sich zum Einreichen per OAuth an; lokale Ordner werden über das lokale MCP eingereicht.
Einreichen → annehmen
Weboberfläche, Remote-MCP und lokales MCP rufen dieselbe Produkt-API auf, die eine geprüfte Anfrage als queued aufzeichnet und mit 202 antwortet.
Browser-NutzerDaten: Ordner · ZIP · GitHub-URLWeboberfläche · Verlauf · Insights
apps/dashboardQuelle und eine registrierte Umgebung werden in der Weboberfläche gewählt.
Weboberfläche · Verlauf · Insights
apps/dashboardDaten: dieselbe Produkt-API · /api/v1validieren · Ziel · 202-Annahmeapps/apiDie Weboberfläche ruft die Produkt-API vom selben Origin auf.
MCP-ClientDaten: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsDas Remote-MCP verbindet sich über OAuth und nimmt ein öffentliches GitHub-Repository als Eingabe.
OAuth MCP · deploy_repository
agent/remote-mcp.jsDaten: dieselbe Produkt-APIvalidieren · Ziel · 202-Annahmeapps/apiDer Remote-MCP-Server ruft dieselbe Deployment-API über seinen internen API-Client auf.
railshot-local MCPDaten: ZIP-Upload · deploy_local_projectvalidieren · Ziel · 202-Annahme
apps/apiDas stdio-MCP auf dem Rechner des Nutzers packt einen Ordner als ZIP und lädt ihn hoch. Seine Session wird nicht mit der Remote-OAuth-Session geteilt.
validieren · Ziel · 202-Annahme
apps/apiDaten: als queued aufgezeichnet · 202Operation-Zustand · Run-Bindungapi/product-store.jsEingabe, registriertes Ziel, Kapazität und Idempotenzschlüssel werden geprüft; die Operation wird als queued aufgezeichnet und mit 202 beantwortet. Ein 202 bedeutet angenommen, nicht deployt.
Operation-Zustand · Run-Bindung
api/product-store.jsDaten: Reihenfolge der QueueDeploy-Queue · 3 gleichzeitigapps/apiIn der Reihenfolge der Annahme entnommen, innerhalb des Limits gleichzeitiger Deployments (standardmäßig 3).
Operation-Zustand · Run-Bindung
api/product-store.jsBeobachtung: Deployment-Zustand · VerlaufWeboberfläche · Verlauf · Insightsapps/dashboardWeboberfläche und MCP-Tools lesen dieselben Operation-Aufzeichnungen. Der letzte Versuch und das aktuell verifizierte Deployment werden getrennt gezeigt, und eine abgeschlossene KI-Aufgabe ist kein Deployment-Erfolg.
CI-Prüfungen → Image-Veröffentlichung
Fixierter Plattformcode prüft den eingereichten Commit, übergibt nur behebbare Fehlschläge an die KI und veröffentlicht nur Images, die dieselben Prüfungen erneut bestanden haben.
Deploy-Queue · 3 gleichzeitig
apps/apiDaten: source commitQuell-Commit · Trailerapps/<tenant>/<app>Die eingereichte Quelle wird zu einem Commit im privaten apps-Repository (mit den Trailern Railshot-Request und Railshot-Target), und der Branch wird ohne Force aktualisiert.
Deploy-Queue · 3 gleichzeitig
apps/apiAusführen · Anwenden: workflow_dispatchloop · Basisprüfungen L0–L3railshot-deploy.ymlFordert einen Lauf mit tenant, app, source_commit und target_id an. Geht die Antwort verloren, wird nicht erneut gesendet; stattdessen werden die Läufe zum selben Commit gesucht.
Quell-Commit · Trailer
apps/<tenant>/<app>Daten: eingereichter Commitloop · Basisprüfungen L0–L3railshot-deploy.ymlNur der eingereichte Commit und fixierter Plattformcode (PLATFORM_REF) werden ausgecheckt.
SDK-Reparatur · nur behebbare Fehlschläge
railshot-deploy.ymlDaten: Korrekturanfrage · bedingtAI SDK providerWird nur für behebbare Fehlerklassen aufgerufen und stoppt, wenn sich derselbe Fehler wiederholt oder das Versuchslimit erreicht ist. Über Bestehen oder Scheitern entscheiden die Prüfungen, nicht das LLM.
Release · GHCR-Veröffentlichung · Bindung
railshot-deploy.ymlDaten: geprüfte Images veröffentlichenGHCRNach Verifikation des Bundles, das die Prüfungen bestanden hat, werden dieselben Images in GHCR veröffentlicht. Nichts wird neu gebaut.
CI-Lauf-Bindung · beobachten
apps/apiBeobachtung: Lauf · Publikation lesenrailshot-deploy.ymlEine Publikation zählt nur, wenn Run-ID, Quell-Commit, Ziel und App mit der angenommenen Aufzeichnung übereinstimmen.
CI-Lauf-Bindung · beobachten
apps/apiFehlschlag · Ergebnis unbekannt: failed · publication_unverifiedOperation-Zustand · Run-Bindungapi/product-store.jsEin CI-Fehlschlag oder eine nicht verifizierte Publikation wird mit Diagnose aufgezeichnet und nicht an CD weitergegeben.
Anwenden → öffentliche Prüfung
Wendet über Config-Git und Argo CD nur an, wenn die Publikation zum registrierten Ziel passt, und zeichnet Erfolg erst auf, wenn die registrierte öffentliche HTTPS-Adresse die Prüfung besteht.
Release · GHCR-Veröffentlichung · Bindung
railshot-deploy.ymlDaten: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiCD liest die Dateien der Publikationsaufzeichnung über einen vertrauenswürdigen Loader. CI selbst erzeugt keine Cluster-Ressource, keine URL und keinen Deployment-Erfolg.
cd.js · deployPublished
apps/apiAusführen · Anwenden: apply · registriertes Zielvertrauenswürdige Konfiguration · registriertes Zielgitops/bridge.pyFührt gitops/bridge.py mit der vertrauenswürdigen Konfiguration nur aus, wenn registrierte App und Tenant mit der Publikationsaufzeichnung übereinstimmen.
Commit · Push · Remote-Rücklesung
gitops/bridge.pyDaten: workload commit · pushConfig-Git-RepoCommittet nur workload.json am registrierten Pfad eines dedizierten Branches, hält zuerst die Push-Absicht fest, pusht und liest die Remote-Revision zurück. Ein unsicherer Push wird nicht wiederholt.
Config-Git-RepoDaten: revisionApplication · AppProject-Prüfung
Argo CDDie Revision des Config-Repositorys, auf die die Argo-CD-Application zeigt.
Argo-Sync · beobachten
gitops/bridge.pyAusführen · Anwenden: Sync · BeobachtenApplication · AppProject-PrüfungArgo CDFordert nach Prüfung des AppProject einen Sync an; das Beobachten liest nur, ohne Sync.
Application · AppProject-Prüfung
Argo CDAusführen · Anwenden: anwendenworkload · ServiceK3s-App-ClusterWendet den Workload auf den registrierten Ziel-Cluster an.
workload · Service
K3s-App-ClusterDaten: Image-Pull · DigestGHCRZieht den veröffentlichten Digest. Ein privates GHCR braucht eigene Pull-Zugangsdaten.
öffentliche HTTPS-Probe
gitops/bridge.pyBeobachtung: HTTPS healthÖffentliche HTTPS-URLPrüft nur die vom Operator registrierte HTTPS-Health-Adresse, ohne Weiterleitungen, auf 200 (und, falls gesetzt, das erwartete JSON).
Öffentliche HTTPS-URLDaten: öffentlicher Pfadworkload · Service
K3s-App-ClusterDer öffentliche Pfad (LB, NodePort, Zertifikat) unterscheidet sich je nach Provider und registriertem Ziel.
cd.js · deployPublished
apps/apiDaten: succeeded · revision · URLOperation-Zustand · Run-Bindungapi/product-store.jsAls succeeded aufgezeichnet nur mit cd.deployed, einer Revision, einer erfolgreichen öffentlichen HTTPS-Prüfung, deren Zeitpunkt und einer gültigen URL.
cd.js · deployPublished
apps/apiFehlschlag · Ergebnis unbekannt: unknown · Abgleich nötigOperation-Zustand · Run-Bindungapi/product-store.jsEin Ergebnis, das nicht bekannt sein kann, bleibt unknown; dasselbe Apply wird weder erneut gesendet noch zurückgerollt.
Beobachtung · nicht das Urteil
Metriken und Probes entscheiden nicht über den Deployment-Erfolg. Fehlende, veraltete und fehlgeschlagene Werte werden so gezeigt, wie sie sind.
metrics observer
apps/apiBeobachtung: PromQL-AbfragePrometheusLiest up, probe_success und Pod-Reihen. Fehlende, veraltete oder fehlgeschlagene Werte werden in diesem Zustand gezeigt und nie zu 0 gemacht.
PrometheusBeobachtung: scrape · probeworkload · Service
K3s-App-ClusterExporter-Scrape und HTTP-Probe. Diese Metriken entscheiden nicht über den Deployment-Erfolg.
Operation-Zustand · Run-Bindung
api/product-store.jsBeobachtung: Deployment-Zustand · VerlaufWeboberfläche · Verlauf · Insightsapps/dashboardWeboberfläche und MCP-Tools lesen dieselben Operation-Aufzeichnungen. Der letzte Versuch und das aktuell verifizierte Deployment werden getrennt gezeigt, und eine abgeschlossene KI-Aufgabe ist kein Deployment-Erfolg.
öffentliche HTTPS-Probe
gitops/bridge.pyBeobachtung: HTTPS healthÖffentliche HTTPS-URLPrüft nur die vom Operator registrierte HTTPS-Health-Adresse, ohne Weiterleitungen, auf 200 (und, falls gesetzt, das erwartete JSON).
Alle Verbindungen in gleicher Stärke. Wird ein Ablauf gewählt, ist nur sein Pfad hervorgehoben, mit nummerierten Schritten.
- Durchgezogen · Richtung, in der Quellcode, Images und Anfragen fließen
- Gestrichelt · Ausführungsanfrage, Anwenden oder Sync
- Lang strichpunktiert · Statusabfragen, Probes und Metriken, getrennt vom Urteil
- Kurz gestrichelt · ein aufgezeichneter Fehlschlag oder ein unbekanntes Ergebnis
- Dicke schwarze Linie · der gewählte Ablauf; Nummern geben die Reihenfolge an
- Kasten · eine Besitzgrenze, ihr Quellpfad in der Kopfzeile
- Innerer Chip · eine Komponente innerhalb dieser Grenze
- Gestrichelter Kasten · außerhalb der Plattform
- Orange Umrandung · wo ein Modell entscheidet
- Produkt-API
- Deployment-Aufzeichnungen
- CD-Ausführungsgrenze
- Eintritt · CI · Ziel
Das Bild vom October 2 (bc61a5a) in docs/architecture/README.md ist Implementierungsgeschichte; diese Architektur folgt dem Code von 645e28a. Provider und Netzwerkpfade unterscheiden sich je nach registriertem Ziel, und das bedeutet nicht, dass jeder Provider immer aktiv ist.