Railshot
AI deployment & operations platform
Driftsätt en lokalt byggd webbapp i förberedda moln- och on-premises-miljöer och driv den sedan.
En AI-plattform för driftsättning och drift som tar en lokalt byggd webbapp till förberedda moln- eller on-premises-miljöer och håller den igång.
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
Webbskärmen och användarens egen agent begär driftsättning via samma produkt-API.
Produkten från en accepterad driftsättningsbegäran via CI-kontroller och publicering av image till Git-konfiguration och Argo CD-utrullning på ett registrerat mål och verifiering av publik HTTPS. Framgång registreras bara med både en tillämpad revision och en offentlig kontroll; ett utfall som inte kan fastställas förblir unknown.
När ett projekt skickas in från webbskärmen eller från en AI-agent som anslutits via MCP genomförs förberedelse av driftsättningsfiler, reparation av fel, publicering av image, utrullning i miljön och verifiering av den publika URL:en; efter driftsättningen visar samma skärm historik och loggar och hanterar uppdateringar, stopp, återupptaganden och radering. Ett teamprojekt.
Tävlingens utvecklingsperiod 28 september 2026 till 4 oktober 2026
Webbskärmen och MCP-servern som byggdes under hackathonet. Fjärr-MCP loggar in med OAuth för att skicka in; lokala mappar skickas in via den lokala MCP:n.
Skicka in → acceptans
Webbskärmen, fjärr-MCP:n och den lokala MCP:n anropar samma produkt-API, som registrerar en kontrollerad förfrågan som queued och svarar 202.
Webbläsaranvändaredata: mapp · ZIP · GitHub-URLwebbskärm · historik · Insights
apps/dashboardKällan och en registrerad miljö väljs på webbskärmen.
webbskärm · historik · Insights
apps/dashboarddata: samma produkt-API · /api/v1validera · mål · acceptans med 202apps/apiWebbskärmen anropar produkt-API:et från samma ursprung.
MCP-klientdata: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsFjärr-MCP:n ansluter via OAuth och tar ett offentligt GitHub-repository som indata.
OAuth MCP · deploy_repository
agent/remote-mcp.jsdata: samma produkt-APIvalidera · mål · acceptans med 202apps/apiFjärr-MCP-servern anropar samma driftsättnings-API via sin interna API-klient.
railshot-local MCPdata: ZIP-uppladdning · deploy_local_projectvalidera · mål · acceptans med 202
apps/apiStdio-MCP:n på användarens dator packar en mapp som ZIP och laddar upp den. Dess session delas inte med fjärrsessionen med OAuth.
validera · mål · acceptans med 202
apps/apidata: registrerad som queued · 202operationstillstånd · körningsbindningapi/product-store.jsIndata, registrerat mål, kapacitet och idempotensnyckel kontrolleras; operationen registreras som queued och besvaras med 202. 202 betyder accepterad, inte driftsatt.
operationstillstånd · körningsbindning
api/product-store.jsdata: köordningdriftsättningskö · 3 åt gångenapps/apiTas i den ordning de accepterades, inom gränsen för samtidiga driftsättningar (3 som standard).
operationstillstånd · körningsbindning
api/product-store.jsobservation: driftsättningstillstånd · historikwebbskärm · historik · Insightsapps/dashboardWebbskärmen och MCP-verktygen läser samma operationsloggar. Det senaste försöket och den aktuella verifierade driftsättningen visas separat, och en avslutad AI-uppgift är inte en lyckad driftsättning.
CI-kontroller → publicering av image
Fastlåst plattformskod kontrollerar den inskickade commiten, lämnar bara fel som går att rätta till AI och publicerar bara images som har klarat samma kontroller igen.
driftsättningskö · 3 åt gången
apps/apidata: source commitkäll-commit · trailersapps/<tenant>/<app>Den inskickade källan blir en commit i det privata apps-repositoryt (med trailers Railshot-Request och Railshot-Target), och grenen uppdateras utan force.
driftsättningskö · 3 åt gången
apps/apiköra · tillämpa: workflow_dispatchloop · baskontroller L0–L3railshot-deploy.ymlBegär en körning med tenant, app, source_commit och target_id. Om svaret går förlorat skickas den inte igen; i stället söks körningar för samma commit.
käll-commit · trailers
apps/<tenant>/<app>data: inskickad commitloop · baskontroller L0–L3railshot-deploy.ymlBara den inskickade commiten och fastlåst plattformskod (PLATFORM_REF) checkas ut.
SDK-reparation · bara fel som går att rätta
railshot-deploy.ymldata: begäran om reparation · villkoradAI SDK providerAnropas bara för felklasser som går att rätta, och stoppas när samma fel upprepas eller gränsen för försök nås. Godkänt eller underkänt avgörs av kontrollerna, inte av LLM:en.
release · publicering till GHCR · bindning
railshot-deploy.ymldata: publicera kontrollerade imagesGHCREfter verifiering av den bundle som klarade kontrollerna publiceras samma images till GHCR. Ingenting byggs om.
bindning av CI-körning · observera
apps/apiobservation: körning · läsning av publiceringrailshot-deploy.ymlEn publicering räknas bara när dess run id, source commit, target och app stämmer med den accepterade posten.
bindning av CI-körning · observera
apps/apifel · okänt utfall: failed · publication_unverifiedoperationstillstånd · körningsbindningapi/product-store.jsEtt CI-fel eller en overifierad publicering registreras med diagnostik och skickas inte vidare till CD.
Tillämpa → publik kontroll
Tillämpar via config-Git och Argo CD bara när publiceringen stämmer med det registrerade målet, och registrerar framgång först när den registrerade publika HTTPS-adressen har kontrollerats.
release · publicering till GHCR · bindning
railshot-deploy.ymldata: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiCD läser publiceringsloggens filer via en betrodd loader. CI skapar inte själv någon klusterresurs, URL eller lyckad driftsättning.
cd.js · deployPublished
apps/apiköra · tillämpa: apply · registrerat målbetrodd config · registrerat målgitops/bridge.pyKör gitops/bridge.py med den betrodda configen bara när den registrerade appen och tenanten stämmer med publiceringsloggen.
commit · push · fjärråterläsning
gitops/bridge.pydata: workload commit · pushConfig-Git-repoCommittar bara workload.json på den registrerade sökvägen i en dedikerad gren, registrerar först push-avsikten, pushar och läser tillbaka fjärr-revisionen. En osäker push upprepas inte.
Config-Git-repodata: revisionApplication · AppProject-kontroll
Argo CDRevisionen i config-repositoryt som Argo CD-Application pekar på.
Argo sync · observera
gitops/bridge.pyköra · tillämpa: sync · observeraApplication · AppProject-kontrollArgo CDBegär en sync efter kontroll av AppProject; observation läser bara, utan sync.
Application · AppProject-kontroll
Argo CDköra · tillämpa: tillämpaworkload · ServiceK3s-appklusterTillämpar arbetslasten på det registrerade målklustret.
workload · Service
K3s-appklusterdata: image-pull · digestGHCRHämtar den publicerade digesten. En privat GHCR kräver en dedikerad pull-autentisering.
publik HTTPS-probe
gitops/bridge.pyobservation: HTTPS healthPublik HTTPS-URLKontrollerar bara den HTTPS-health-adress som operatören registrerat, utan omdirigeringar, för 200 (och förväntad JSON om angiven).
Publik HTTPS-URLdata: publik vägworkload · Service
K3s-appklusterDen publika vägen (LB, NodePort, certifikat) varierar med provider och registrerat mål.
cd.js · deployPublished
apps/apidata: succeeded · revision · URLoperationstillstånd · körningsbindningapi/product-store.jsRegistreras som succeeded bara med cd.deployed, en revision, en lyckad publik HTTPS-kontroll, tidpunkten för den och en giltig URL.
cd.js · deployPublished
apps/apifel · okänt utfall: unknown · kräver avstämningoperationstillstånd · körningsbindningapi/product-store.jsEtt utfall som inte kan fastställas förblir unknown; samma apply skickas varken igen eller rullas tillbaka.
Observation · inte domen
Mätvärden och prober avgör inte om driftsättningen lyckades. Saknade, inaktuella och misslyckade värden visas som de är.
metrics observer
apps/apiobservation: PromQL-frågaPrometheusLäser serierna up, probe_success och Pod. Saknade, inaktuella eller misslyckade värden visas i det tillståndet och görs aldrig om till 0.
Prometheusobservation: scrape · probeworkload · Service
K3s-appklusterExporter-scrape och HTTP-probe. Dessa mätvärden används inte för att avgöra om driftsättningen lyckades.
operationstillstånd · körningsbindning
api/product-store.jsobservation: driftsättningstillstånd · historikwebbskärm · historik · Insightsapps/dashboardWebbskärmen och MCP-verktygen läser samma operationsloggar. Det senaste försöket och den aktuella verifierade driftsättningen visas separat, och en avslutad AI-uppgift är inte en lyckad driftsättning.
publik HTTPS-probe
gitops/bridge.pyobservation: HTTPS healthPublik HTTPS-URLKontrollerar bara den HTTPS-health-adress som operatören registrerat, utan omdirigeringar, för 200 (och förväntad JSON om angiven).
Alla kopplingar med samma tjocklek. Välj ett flöde för att bara markera dess väg, med numrerade steg.
- Heldragen · riktningen som källa, images och förfrågningar flödar i
- Streckad · körbegäran, tillämpa eller sync
- Lång streck-punkt · statusläsningar, prober och mätvärden, skilda från domen
- Kort streck · ett registrerat fel eller ett okänt utfall
- Kraftig svart linje · det valda flödet; siffrorna anger ordningen
- Ruta · en ägande gräns, källsökvägen i rubriken
- Inre chip · en komponent inom gränsen
- Streckad ruta · utanför plattformen
- Orange kontur · där en modell fattar beslut
- Produkt-API
- Driftsättningsloggar
- CD-exekveringsgräns
- Ingång · CI · mål
Bilden från 2 oktober (bc61a5a) i docs/architecture/README.md är implementationshistorik; denna arkitektur följer koden vid 645e28a. Providers och nätverksvägar varierar med registrerat mål, och det betyder inte att alla providers alltid är påslagna.