RAILSHOT.
Tillbaka till salen

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.

28 september 2026 till 4 oktober 2026 · Avslutat

Teamprojekt · min del: planering och implementation av CI, CSP-kluster och Ansible-gränssnitt, drift, kodgranskning och integration i teamet

SoftBank Hackathon 2026 powered by KOREC & ProgateDeltagare i kvalomgången · uttagning till finalen tillkännages 26 oktober 2026 (per 7 oktober 2026)

  • WebbImplementerad · hackathon
  • MCP-serverImplementerad · fjärr · lokal

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

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.

Produktarkitektur · ritad utifrån kodvägarna vid offentlig commit 645e28a
Railshots produktarkitekturKomponenter och förbindelser i Railshot-produkten. Webbskärmen, fjärr-MCP med OAuth och en lokal MCP på användarens dator begär driftsättning via samma produkt-API, som registrerar en käll-commit och en CI-körning. CI avgör utifrån fasta kontroller och publicerar de kontrollerade images till GHCR. CD-adaptern tillämpar via config-Git och Argo CD bara när det registrerade målet stämmer med publiceringsloggen, kontrollerar sedan den registrerade publika HTTPS-adressen och registrerar utfallet. Mätvärden är observation, skilda från domen.Webbläsaranvändaremapp · ZIP · GitHub-URLMCP-klientChatGPT · Codex · Clauderailshot-local MCPanvändarens dator · stdioGHCRimages via digestAI SDK providerCodex · Claude SDKConfig-Git-reporegistrerad workload.jsonPublik HTTPS-URLregistrerad health-vägPrometheusdriftens kontroll-VM · läsapps/dashboardwebbskärm · historik · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/apivalidera · mål · acceptans med 202driftsättningskö · 3 åt gångenbindning av CI-körning · observeracd.js · deployPublishedmetrics observerapi/product-store.jsoperationstillstånd · körningsbindninggitops/bridge.pybetrodd config · registrerat målcommit · push · fjärråterläsningArgo sync · observerapublik HTTPS-probeArgo CDApplication · AppProject-kontrollapps/<tenant>/<app>käll-commit · trailersrailshot-deploy.ymlloop · baskontroller L0–L3SDK-reparation · bara fel som går att rättasamma kontroller → testad bundlerelease · publicering till GHCR · bindningK3s-appklusterworkload · ServiceRailshot-plattformdriftkluster · AWSGitHubprivat apps-repo · ActionsRegistrerat målpublik väg per provider1 mapp · ZIP · GitHub-URL · Webbläsaranvändare → webbskärm · historik · Insights12samma produkt-API · /api/v13 OAuth · deploy_repository · MCP-klient → OAuth MCP · deploy_repository34samma produkt-API5 ZIP-uppladdning · deploy_local_project · railshot-local MCP → validera · mål · acceptans med 20256 registrerad som queued · 202 · validera · mål · acceptans med 202 → operationstillstånd · körningsbindning67 köordning · operationstillstånd · körningsbindning → driftsättningskö · 3 åt gången78driftsättningstillstånd · historik1source commit2workflow_dispatch3inskickad commit4begäran om reparation · villkorad5publicera kontrollerade images6körning · läsning av publicering7 failed · publication_unverified · bindning av CI-körning · observera → operationstillstånd · körningsbindning71images.json · spec · verdict · manifest2apply · registrerat mål3workload commit · push4revision5sync · observera6tillämpa7image-pull · digest8HTTPS health9 publik väg · Publik HTTPS-URL → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → operationstillstånd · körningsbindning1011 unknown · kräver avstämning · cd.js · deployPublished → operationstillstånd · körningsbindning111PromQL-fråga2scrape · probe3driftsättningstillstånd · historik4HTTPS health

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.

  1. Webbläsaranvändaredata: mapp · ZIP · GitHub-URLwebbskärm · historik · Insightsapps/dashboard

    Källan och en registrerad miljö väljs på webbskärmen.

  2. webbskärm · historik · Insightsapps/dashboarddata: samma produkt-API · /api/v1validera · mål · acceptans med 202apps/api

    Webbskärmen anropar produkt-API:et från samma ursprung.

  3. MCP-klientdata: OAuth · deploy_repositoryOAuth MCP · deploy_repositoryagent/remote-mcp.js

    Fjärr-MCP:n ansluter via OAuth och tar ett offentligt GitHub-repository som indata.

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.jsdata: samma produkt-APIvalidera · mål · acceptans med 202apps/api

    Fjärr-MCP-servern anropar samma driftsättnings-API via sin interna API-klient.

  5. railshot-local MCPdata: ZIP-uppladdning · deploy_local_projectvalidera · mål · acceptans med 202apps/api

    Stdio-MCP:n på användarens dator packar en mapp som ZIP och laddar upp den. Dess session delas inte med fjärrsessionen med OAuth.

  6. validera · mål · acceptans med 202apps/apidata: registrerad som queued · 202operationstillstånd · körningsbindningapi/product-store.js

    Indata, registrerat mål, kapacitet och idempotensnyckel kontrolleras; operationen registreras som queued och besvaras med 202. 202 betyder accepterad, inte driftsatt.

  7. operationstillstånd · körningsbindningapi/product-store.jsdata: köordningdriftsättningskö · 3 åt gångenapps/api

    Tas i den ordning de accepterades, inom gränsen för samtidiga driftsättningar (3 som standard).

  8. operationstillstånd · körningsbindningapi/product-store.jsobservation: driftsättningstillstånd · historikwebbskärm · historik · Insightsapps/dashboard

    Webbskä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.

  1. driftsättningskö · 3 åt gångenapps/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.

  2. driftsättningskö · 3 åt gångenapps/apiköra · tillämpa: workflow_dispatchloop · baskontroller L0–L3railshot-deploy.yml

    Begä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.

  3. käll-commit · trailersapps/<tenant>/<app>data: inskickad commitloop · baskontroller L0–L3railshot-deploy.yml

    Bara den inskickade commiten och fastlåst plattformskod (PLATFORM_REF) checkas ut.

  4. SDK-reparation · bara fel som går att rättarailshot-deploy.ymldata: begäran om reparation · villkoradAI SDK provider

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

  5. release · publicering till GHCR · bindningrailshot-deploy.ymldata: publicera kontrollerade imagesGHCR

    Efter verifiering av den bundle som klarade kontrollerna publiceras samma images till GHCR. Ingenting byggs om.

  6. bindning av CI-körning · observeraapps/apiobservation: körning · läsning av publiceringrailshot-deploy.yml

    En publicering räknas bara när dess run id, source commit, target och app stämmer med den accepterade posten.

  7. bindning av CI-körning · observeraapps/apifel · okänt utfall: failed · publication_unverifiedoperationstillstånd · körningsbindningapi/product-store.js

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

  1. release · publicering till GHCR · bindningrailshot-deploy.ymldata: images.json · spec · verdict · manifestcd.js · deployPublishedapps/api

    CD läser publiceringsloggens filer via en betrodd loader. CI skapar inte själv någon klusterresurs, URL eller lyckad driftsättning.

  2. cd.js · deployPublishedapps/apiköra · tillämpa: apply · registrerat målbetrodd config · registrerat målgitops/bridge.py

    Kör gitops/bridge.py med den betrodda configen bara när den registrerade appen och tenanten stämmer med publiceringsloggen.

  3. commit · push · fjärråterläsninggitops/bridge.pydata: workload commit · pushConfig-Git-repo

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

  4. Config-Git-repodata: revisionApplication · AppProject-kontrollArgo CD

    Revisionen i config-repositoryt som Argo CD-Application pekar på.

  5. Argo sync · observeragitops/bridge.pyköra · tillämpa: sync · observeraApplication · AppProject-kontrollArgo CD

    Begär en sync efter kontroll av AppProject; observation läser bara, utan sync.

  6. Application · AppProject-kontrollArgo CDköra · tillämpa: tillämpaworkload · ServiceK3s-appkluster

    Tillämpar arbetslasten på det registrerade målklustret.

  7. workload · ServiceK3s-appklusterdata: image-pull · digestGHCR

    Hämtar den publicerade digesten. En privat GHCR kräver en dedikerad pull-autentisering.

  8. publik HTTPS-probegitops/bridge.pyobservation: HTTPS healthPublik HTTPS-URL

    Kontrollerar bara den HTTPS-health-adress som operatören registrerat, utan omdirigeringar, för 200 (och förväntad JSON om angiven).

  9. Publik HTTPS-URLdata: publik vägworkload · ServiceK3s-appkluster

    Den publika vägen (LB, NodePort, certifikat) varierar med provider och registrerat mål.

  10. cd.js · deployPublishedapps/apidata: succeeded · revision · URLoperationstillstånd · körningsbindningapi/product-store.js

    Registreras som succeeded bara med cd.deployed, en revision, en lyckad publik HTTPS-kontroll, tidpunkten för den och en giltig URL.

  11. cd.js · deployPublishedapps/apifel · okänt utfall: unknown · kräver avstämningoperationstillstånd · körningsbindningapi/product-store.js

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

  1. metrics observerapps/apiobservation: PromQL-frågaPrometheus

    Lä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.

  2. Prometheusobservation: scrape · probeworkload · ServiceK3s-appkluster

    Exporter-scrape och HTTP-probe. Dessa mätvärden används inte för att avgöra om driftsättningen lyckades.

  3. operationstillstånd · körningsbindningapi/product-store.jsobservation: driftsättningstillstånd · historikwebbskärm · historik · Insightsapps/dashboard

    Webbskä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.

  4. publik HTTPS-probegitops/bridge.pyobservation: HTTPS healthPublik HTTPS-URL

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