Railshot
AI deployment & operations platform
Nasadit lokálně vytvořenou webovou aplikaci do připravených cloudových a on-premises prostředí a pak ji provozovat.
Platforma AI pro nasazení a provoz, která převede lokálně vytvořenou webovou aplikaci do připravených cloudových nebo on-premises prostředí a dál ji provozuje.
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
Webová obrazovka i vlastní agent žádají o nasazení přes stejné API produktu.
Produkt od přijatého požadavku na nasazení přes kontroly CI a publikaci obrazu až po konfiguraci Git a nasazení přes Argo CD na registrovaném cíli a ověření veřejného HTTPS. Úspěch se zaznamená jen s aplikovanou revizí i veřejnou kontrolou; výsledek, který nelze zjistit, zůstává unknown.
Projekt odeslaný z webové obrazovky nebo z vlastního agenta AI připojeného přes MCP projde přípravou souborů pro nasazení, opravou selhání, publikací obrazu, nasazením do prostředí a ověřením veřejné URL; po nasazení tatáž obrazovka ukazuje historii a logy a spravuje aktualizace, zastavení, obnovení a smazání. Týmový projekt.
Vývojové období soutěže September 28, 2026 to October 4, 2026
Webová obrazovka a server MCP vytvořené během hackathonu. Vzdálené MCP se přihlašuje přes OAuth a odesílá projekt; lokální složky se odesílají přes lokální MCP.
Odeslání → přijetí
Webová obrazovka, vzdálené MCP i lokální MCP volají stejné API produktu, které zkontrolovaný požadavek zaznamená jako queued a odpoví 202.
Uživatel prohlížečeúdaje: složka · ZIP · URL GitHubwebová obrazovka · historie · Insights
apps/dashboardZdroj a registrované prostředí se volí na webové obrazovce.
webová obrazovka · historie · Insights
apps/dashboardúdaje: stejné API produktu · /api/v1validace · cíl · přijetí 202apps/apiWebová obrazovka volá API produktu ze stejného originu.
Klient MCPúdaje: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsVzdálené MCP se připojuje přes OAuth a jako vstup přijímá veřejný repozitář GitHub.
OAuth MCP · deploy_repository
agent/remote-mcp.jsúdaje: stejné API produktuvalidace · cíl · přijetí 202apps/apiVzdálený server MCP volá stejné API nasazení přes svého interního klienta API.
railshot-local MCPúdaje: nahrání ZIP · deploy_local_projectvalidace · cíl · přijetí 202
apps/apiMCP stdio na počítači uživatele zabalí složku do ZIP a nahraje ji. Jeho relace se se vzdálenou relací OAuth nesdílí.
validace · cíl · přijetí 202
apps/apiúdaje: zaznamenáno jako queued · 202stav operace · vazba běhuapi/product-store.jsKontroluje se vstup, registrovaný cíl, kapacita a klíč idempotence; operace se zaznamená jako queued a odpovědí je 202. 202 znamená přijetí, nikoli nasazení.
stav operace · vazba běhu
api/product-store.jsúdaje: pořadí ve frontěfronta nasazení · 3 současněapps/apiOdebírá se v pořadí přijetí, v rámci limitu souběžných nasazení (výchozí 3).
stav operace · vazba běhu
api/product-store.jspozorování: stav nasazení · historiewebová obrazovka · historie · Insightsapps/dashboardWebová obrazovka i nástroje MCP čtou stejné záznamy operací. Poslední pokus a aktuální ověřené nasazení se zobrazují zvlášť a dokončená úloha AI neznamená úspěšné nasazení.
Kontroly CI → publikace obrazu
Připnutý kód platformy zkontroluje odeslaný commit, AI předá jen opravitelná selhání a publikuje jen obrazy, které znovu prošly stejnými kontrolami.
fronta nasazení · 3 současně
apps/apiúdaje: source commitzdrojový commit · traileryapps/<tenant>/<app>Odeslaný zdroj se stane commitem v soukromém repozitáři apps (s trailery Railshot-Request a Railshot-Target) a větev se aktualizuje bez force.
fronta nasazení · 3 současně
apps/apispuštění · aplikace: workflow_dispatchsmyčka · základní kontroly L0–L3railshot-deploy.ymlPožádá o běh s tenant, app, source_commit a target_id. Pokud se odpověď ztratí, znovu se neposílá; místo toho se vyhledají běhy pro tentýž commit.
zdrojový commit · trailery
apps/<tenant>/<app>údaje: odeslaný commitsmyčka · základní kontroly L0–L3railshot-deploy.ymlCheckoutuje se jen odeslaný commit a připnutý kód platformy (PLATFORM_REF).
oprava přes SDK · jen opravitelná selhání
railshot-deploy.ymlúdaje: žádost o opravu · podmíněněAI SDK providerVolá se jen pro opravitelné třídy selhání a zastaví se, když se stejné selhání opakuje nebo je dosažen limit pokusů. O úspěchu či neúspěchu rozhodují kontroly, ne LLM.
vydání · publikace do GHCR · vazba
railshot-deploy.ymlúdaje: publikace zkontrolovaných obrazůGHCRPo ověření bundlu, který prošel kontrolami, se tytéž obrazy publikují do GHCR. Nic se znovu nesestavuje.
vazba běhu CI · pozorování
apps/apipozorování: čtení běhu · publikacerailshot-deploy.ymlPublikace se počítá jen tehdy, když její run id, zdrojový commit, cíl a aplikace odpovídají přijatému záznamu.
vazba běhu CI · pozorování
apps/apiselhání · neznámý výsledek: failed · publication_unverifiedstav operace · vazba běhuapi/product-store.jsSelhání CI nebo neověřená publikace se zaznamená s diagnostikou a do CD se nepředá.
Aplikace → veřejná kontrola
Změny aplikuje přes config Git a Argo CD jen tehdy, když publikace odpovídá registrovanému cíli, a úspěch zaznamená teprve po úspěšné kontrole registrované veřejné adresy HTTPS.
vydání · publikace do GHCR · vazba
railshot-deploy.ymlúdaje: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiCD čte soubory záznamu o publikaci přes důvěryhodný loader. Samotné CI nevytváří žádný prostředek clusteru, URL ani úspěch nasazení.
cd.js · deployPublished
apps/apispuštění · aplikace: aplikace · registrovaný cíldůvěryhodná konfigurace · registrovaný cílgitops/bridge.pySpustí gitops/bridge.py s důvěryhodnou konfigurací jen tehdy, když registrovaná aplikace a tenant odpovídají záznamu o publikaci.
commit · push · vzdálené zpětné čtení
gitops/bridge.pyúdaje: workload commit · pushRepozitář Git s konfiguracíCommituje jen workload.json v registrované cestě vyhrazené větve, nejprve zaznamená záměr push, provede push a zpětně přečte vzdálenou revizi. Nejistý push se neopakuje.
Repozitář Git s konfiguracíúdaje: revisionkontrola Application · AppProject
Argo CDRevize repozitáře konfigurace, na kterou ukazuje Application v Argo CD.
synchronizace Argo · pozorování
gitops/bridge.pyspuštění · aplikace: synchronizace · pozorováníkontrola Application · AppProjectArgo CDPo kontrole AppProject požádá o synchronizaci; pozorování jen čte, bez synchronizace.
kontrola Application · AppProject
Argo CDspuštění · aplikace: aplikaceworkload · ServiceAplikační cluster K3sAplikuje workload na registrovaný cílový cluster.
workload · Service
Aplikační cluster K3súdaje: stažení obrazu · digestGHCRStáhne publikovaný digest. Soukromé GHCR vyžaduje vyhrazené přihlašovací údaje ke stahování.
veřejná sonda HTTPS
gitops/bridge.pypozorování: HTTPS healthVeřejná adresa HTTPSKontroluje jen operátorem registrovanou adresu HTTPS health, bez přesměrování, na 200 (a očekávaný JSON, je-li nastaven).
Veřejná adresa HTTPSúdaje: veřejná cestaworkload · Service
Aplikační cluster K3sVeřejná cesta (LB, NodePort, certifikát) se liší podle poskytovatele a registrovaného cíle.
cd.js · deployPublished
apps/apiúdaje: succeeded · revision · URLstav operace · vazba běhuapi/product-store.jsZaznamená se jako succeeded jen s cd.deployed, revizí, úspěšnou veřejnou kontrolou HTTPS, jejím časem a platnou URL.
cd.js · deployPublished
apps/apiselhání · neznámý výsledek: unknown · nutné odsouhlasenístav operace · vazba běhuapi/product-store.jsVýsledek, který nelze zjistit, zůstává unknown; stejná aplikace se znovu neposílá ani nevrací zpět.
Pozorování · ne rozhodnutí
Metriky a sondy o úspěchu nasazení nerozhodují. Chybějící, zastaralé a neúspěšné hodnoty se zobrazují tak, jak jsou.
metrics observer
apps/apipozorování: dotaz PromQLPrometheusČte série up, probe_success a podů. Chybějící, zastaralé nebo neúspěšné hodnoty se zobrazují v tomto stavu a nikdy se nemění na 0.
Prometheuspozorování: scrape · probeworkload · Service
Aplikační cluster K3sScrape exportéru a sonda HTTP. Tyto metriky se nepoužívají k rozhodnutí o úspěchu nasazení.
stav operace · vazba běhu
api/product-store.jspozorování: stav nasazení · historiewebová obrazovka · historie · Insightsapps/dashboardWebová obrazovka i nástroje MCP čtou stejné záznamy operací. Poslední pokus a aktuální ověřené nasazení se zobrazují zvlášť a dokončená úloha AI neznamená úspěšné nasazení.
veřejná sonda HTTPS
gitops/bridge.pypozorování: HTTPS healthVeřejná adresa HTTPSKontroluje jen operátorem registrovanou adresu HTTPS health, bez přesměrování, na 200 (a očekávaný JSON, je-li nastaven).
Každé spojení se stejnou váhou. Výběr toku zvýrazní jen jeho cestu s očíslovanými kroky.
- Plná čára · směr toku zdrojů, obrazů a požadavků
- Přerušovaná čára · požadavek na spuštění, aplikace nebo synchronizace
- Dlouhá čerchovaná · čtení stavu, sondy a metriky, oddělené od rozhodnutí
- Krátká čárka · zaznamenané selhání nebo neznámý výsledek
- Silná černá čára · zvolený tok; čísla udávají pořadí
- Rámeček · hranice vlastnictví, cesta ke zdroji v záhlaví
- Vnitřní štítek · komponenta uvnitř této hranice
- Přerušovaný rámeček · mimo platformu
- Oranžový obrys · místo, kde rozhoduje model
- API produktu
- Záznamy nasazení
- Hranice provádění CD
- Vstup · CI · cíl
Obrázek z October 2 (bc61a5a) v docs/architecture/README.md je historií implementace; tato architektura odpovídá kódu 645e28a. Poskytovatelé a síťové cesty se liší podle registrovaného cíle, což neznamená, že je každý poskytovatel vždy zapnutý.