RAILSHOT.
Zpět do sálu

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.

2026.09.28 — 2026.10.04 · Ukončeno

Týmový projekt · můj podíl: plánování a implementace CI, clustery CSP a rozhraní Ansible, provoz, revize kódu týmu a integrace

SoftBank Hackathon 2026 powered by KOREC & ProgateÚčastník předkola · výběr finalistů bude oznámen 2026.10.26 (stav k 2026.10.07)

  • WebImplementováno · hackathon
  • Server MCPImplementováno · vzdáleně · lokálně

Railshot vocabulary

Lens
Deployment
Delivery
Endpoint Verification
Evidence
Artifact Identity
Reconciliation
  1. intake
  2. checks
  3. repair
  4. publish
  5. rollout
  1. route
  2. probe
  1. source commit
  2. digest
  3. binding
  1. unknown
  2. resume
  3. 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.

Architektura produktu · nakresleno podle cest kódu ve veřejném commitu 645e28a
Architektura produktu RailshotKomponenty a spojení produktu Railshot. Webová obrazovka, vzdálené MCP s OAuth a lokální MCP na počítači uživatele žádají o nasazení přes stejné API produktu, které zaregistruje zdrojový commit a běh CI. CI rozhoduje pevnými kontrolami a zkontrolované obrazy publikuje do GHCR. Adaptér CD aplikuje změny přes config Git a Argo CD jen tehdy, když registrovaný cíl odpovídá záznamu o publikaci, pak ověří registrovanou veřejnou adresu HTTPS a zaznamená výsledek. Metriky jsou pozorování, oddělené od rozhodnutí.Uživatel prohlížečesložka · ZIP · URL GitHubKlient MCPChatGPT · Codex · Clauderailshot-local MCPpočítač uživatele · stdioGHCRobrazy podle digestuAI SDK providerCodex · Claude SDKRepozitář Git s konfiguracíregistrovaný workload.jsonVeřejná adresa HTTPSregistrovaná cesta healthPrometheusprovozní řídicí VM · čteníapps/dashboardwebová obrazovka · historie · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/apivalidace · cíl · přijetí 202fronta nasazení · 3 současněvazba běhu CI · pozorovánícd.js · deployPublishedmetrics observerapi/product-store.jsstav operace · vazba běhugitops/bridge.pydůvěryhodná konfigurace · registrovaný cílcommit · push · vzdálené zpětné čtenísynchronizace Argo · pozorováníveřejná sonda HTTPSArgo CDkontrola Application · AppProjectapps/<tenant>/<app>zdrojový commit · traileryrailshot-deploy.ymlsmyčka · základní kontroly L0–L3oprava přes SDK · jen opravitelná selhánístejné kontroly → zkontrolovaný bundlevydání · publikace do GHCR · vazbaAplikační cluster K3sworkload · ServicePlatforma Railshotprovozní cluster · AWSGitHubsoukromý repozitář apps · ActionsRegistrovaný cílveřejná cesta pro každého poskytovatele1 složka · ZIP · URL GitHub · Uživatel prohlížeče → webová obrazovka · historie · Insights12stejné API produktu · /api/v13 OAuth · deploy_repository · Klient MCP → OAuth MCP · deploy_repository34stejné API produktu5 nahrání ZIP · deploy_local_project · railshot-local MCP → validace · cíl · přijetí 20256 zaznamenáno jako queued · 202 · validace · cíl · přijetí 202 → stav operace · vazba běhu67 pořadí ve frontě · stav operace · vazba běhu → fronta nasazení · 3 současně78stav nasazení · historie1source commit2workflow_dispatch3odeslaný commit4žádost o opravu · podmíněně5publikace zkontrolovaných obrazů6čtení běhu · publikace7 failed · publication_unverified · vazba běhu CI · pozorování → stav operace · vazba běhu71images.json · spec · verdict · manifest2aplikace · registrovaný cíl3workload commit · push4revision5 synchronizace · pozorování · synchronizace Argo · pozorování → kontrola Application · AppProject56aplikace7stažení obrazu · digest8HTTPS health9 veřejná cesta · Veřejná adresa HTTPS → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → stav operace · vazba běhu1011 unknown · nutné odsouhlasení · cd.js · deployPublished → stav operace · vazba běhu111dotaz PromQL2scrape · probe3stav nasazení · historie4HTTPS health

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.

  1. Uživatel prohlížečeúdaje: složka · ZIP · URL GitHubwebová obrazovka · historie · Insightsapps/dashboard

    Zdroj a registrované prostředí se volí na webové obrazovce.

  2. webová obrazovka · historie · Insightsapps/dashboardúdaje: stejné API produktu · /api/v1validace · cíl · přijetí 202apps/api

    Webová obrazovka volá API produktu ze stejného originu.

  3. Klient MCPúdaje: OAuth · deploy_repositoryOAuth MCP · deploy_repositoryagent/remote-mcp.js

    Vzdálené MCP se připojuje přes OAuth a jako vstup přijímá veřejný repozitář GitHub.

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.jsúdaje: stejné API produktuvalidace · cíl · přijetí 202apps/api

    Vzdálený server MCP volá stejné API nasazení přes svého interního klienta API.

  5. railshot-local MCPúdaje: nahrání ZIP · deploy_local_projectvalidace · cíl · přijetí 202apps/api

    MCP 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í.

  6. validace · cíl · přijetí 202apps/apiúdaje: zaznamenáno jako queued · 202stav operace · vazba běhuapi/product-store.js

    Kontroluje 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í.

  7. stav operace · vazba běhuapi/product-store.jsúdaje: pořadí ve frontěfronta nasazení · 3 současněapps/api

    Odebírá se v pořadí přijetí, v rámci limitu souběžných nasazení (výchozí 3).

  8. stav operace · vazba běhuapi/product-store.jspozorování: stav nasazení · historiewebová obrazovka · historie · Insightsapps/dashboard

    Webová 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.

  1. 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.

  2. fronta nasazení · 3 současněapps/apispuštění · aplikace: workflow_dispatchsmyčka · základní kontroly L0–L3railshot-deploy.yml

    Požá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.

  3. zdrojový commit · traileryapps/<tenant>/<app>údaje: odeslaný commitsmyčka · základní kontroly L0–L3railshot-deploy.yml

    Checkoutuje se jen odeslaný commit a připnutý kód platformy (PLATFORM_REF).

  4. oprava přes SDK · jen opravitelná selhánírailshot-deploy.ymlúdaje: žádost o opravu · podmíněněAI SDK provider

    Volá 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.

  5. vydání · publikace do GHCR · vazbarailshot-deploy.ymlúdaje: publikace zkontrolovaných obrazůGHCR

    Po ověření bundlu, který prošel kontrolami, se tytéž obrazy publikují do GHCR. Nic se znovu nesestavuje.

  6. vazba běhu CI · pozorováníapps/apipozorování: čtení běhu · publikacerailshot-deploy.yml

    Publikace se počítá jen tehdy, když její run id, zdrojový commit, cíl a aplikace odpovídají přijatému záznamu.

  7. vazba běhu CI · pozorováníapps/apiselhání · neznámý výsledek: failed · publication_unverifiedstav operace · vazba běhuapi/product-store.js

    Selhá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.

  1. vydání · publikace do GHCR · vazbarailshot-deploy.ymlúdaje: images.json · spec · verdict · manifestcd.js · deployPublishedapps/api

    CD čte soubory záznamu o publikaci přes důvěryhodný loader. Samotné CI nevytváří žádný prostředek clusteru, URL ani úspěch nasazení.

  2. cd.js · deployPublishedapps/apispuštění · aplikace: aplikace · registrovaný cíldůvěryhodná konfigurace · registrovaný cílgitops/bridge.py

    Spustí gitops/bridge.py s důvěryhodnou konfigurací jen tehdy, když registrovaná aplikace a tenant odpovídají záznamu o publikaci.

  3. 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.

  4. Repozitář Git s konfiguracíúdaje: revisionkontrola Application · AppProjectArgo CD

    Revize repozitáře konfigurace, na kterou ukazuje Application v Argo CD.

  5. synchronizace Argo · pozorovánígitops/bridge.pyspuštění · aplikace: synchronizace · pozorováníkontrola Application · AppProjectArgo CD

    Po kontrole AppProject požádá o synchronizaci; pozorování jen čte, bez synchronizace.

  6. kontrola Application · AppProjectArgo CDspuštění · aplikace: aplikaceworkload · ServiceAplikační cluster K3s

    Aplikuje workload na registrovaný cílový cluster.

  7. workload · ServiceAplikační cluster K3súdaje: stažení obrazu · digestGHCR

    Stáhne publikovaný digest. Soukromé GHCR vyžaduje vyhrazené přihlašovací údaje ke stahování.

  8. veřejná sonda HTTPSgitops/bridge.pypozorování: HTTPS healthVeřejná adresa HTTPS

    Kontroluje jen operátorem registrovanou adresu HTTPS health, bez přesměrování, na 200 (a očekávaný JSON, je-li nastaven).

  9. Veřejná adresa HTTPSúdaje: veřejná cestaworkload · ServiceAplikační cluster K3s

    Veřejná cesta (LB, NodePort, certifikát) se liší podle poskytovatele a registrovaného cíle.

  10. cd.js · deployPublishedapps/apiúdaje: succeeded · revision · URLstav operace · vazba běhuapi/product-store.js

    Zaznamená se jako succeeded jen s cd.deployed, revizí, úspěšnou veřejnou kontrolou HTTPS, jejím časem a platnou URL.

  11. cd.js · deployPublishedapps/apiselhání · neznámý výsledek: unknown · nutné odsouhlasenístav operace · vazba běhuapi/product-store.js

    Vý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.

  1. metrics observerapps/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.

  2. Prometheuspozorování: scrape · probeworkload · ServiceAplikační cluster K3s

    Scrape exportéru a sonda HTTP. Tyto metriky se nepoužívají k rozhodnutí o úspěchu nasazení.

  3. stav operace · vazba běhuapi/product-store.jspozorování: stav nasazení · historiewebová obrazovka · historie · Insightsapps/dashboard

    Webová 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í.

  4. veřejná sonda HTTPSgitops/bridge.pypozorování: HTTPS healthVeřejná adresa HTTPS

    Kontroluje 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ý.