Railshot
AI deployment & operations platform
Rull ut en lokalt bygget nettapp til forberedte sky- og on-premises-miljøer, og drift den deretter.
En AI-plattform for utrulling og drift som tar en lokalt bygget nettapp til forberedte sky- eller on-premises-miljøer og holder den i gang.
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
Nettskjermen og brukerens egen agent ber om utrulling via samme produkt-API.
Produktet fra en akseptert utrullingsforespørsel gjennom CI-kontroller og publisering av image til Git-konfigurasjon og Argo CD-utrulling på et registrert mål og verifisering av offentlig HTTPS. Suksess registreres bare med både en anvendt revisjon og en offentlig kontroll; et utfall som ikke kan fastslås, forblir unknown.
Når et prosjekt sendes inn fra nettskjermen eller fra en AI-agent koblet til via MCP, gjennomføres klargjøring av utrullingsfiler, reparasjon av feil, publisering av image, utrulling i miljøet og verifisering av den offentlige URL-en; etter utrullingen viser samme skjerm historikk og logger og håndterer oppdateringer, stopp, gjenopptakelser og sletting. Et teamprosjekt.
Konkurransens utviklingsperiode 28. september 2026 til 4. oktober 2026
Nettskjermen og MCP-serveren som ble bygget under hackathonet. Ekstern MCP logger inn med OAuth for å sende inn; lokale mapper sendes inn via den lokale MCP-en.
Send inn → aksept
Nettskjermen, den eksterne MCP-en og den lokale MCP-en kaller samme produkt-API, som registrerer en kontrollert forespørsel som queued og svarer 202.
Nettleserbrukerdata: mappe · ZIP · GitHub-URLnettskjerm · historikk · Insights
apps/dashboardKilden og et registrert miljø velges på nettskjermen.
nettskjerm · historikk · Insights
apps/dashboarddata: samme produkt-API · /api/v1valider · mål · aksept med 202apps/apiNettskjermen kaller produkt-API-et fra samme opprinnelse.
MCP-klientdata: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsDen eksterne MCP-en kobler til via OAuth og tar et offentlig GitHub-repository som input.
OAuth MCP · deploy_repository
agent/remote-mcp.jsdata: samme produkt-APIvalider · mål · aksept med 202apps/apiDen eksterne MCP-serveren kaller samme utrullings-API via sin interne API-klient.
railshot-local MCPdata: ZIP-opplasting · deploy_local_projectvalider · mål · aksept med 202
apps/apiStdio-MCP-en på brukerens datamaskin pakker en mappe som ZIP og laster den opp. Sesjonen deles ikke med den eksterne OAuth-sesjonen.
valider · mål · aksept med 202
apps/apidata: registrert som queued · 202operasjonstilstand · kjøringsbindingapi/product-store.jsInput, registrert mål, kapasitet og idempotensnøkkel kontrolleres; operasjonen registreres som queued og besvares med 202. 202 betyr akseptert, ikke utrullet.
operasjonstilstand · kjøringsbinding
api/product-store.jsdata: køordningutrullingskø · 3 om gangenapps/apiTas i den rekkefølgen de ble akseptert, innenfor grensen for samtidige utrullinger (3 som standard).
operasjonstilstand · kjøringsbinding
api/product-store.jsobservasjon: utrullingstilstand · historikknettskjerm · historikk · Insightsapps/dashboardNettskjermen og MCP-verktøyene leser de samme operasjonsloggene. Det siste forsøket og den gjeldende verifiserte utrullingen vises separat, og en fullført AI-oppgave er ikke en vellykket utrulling.
CI-kontroller → publisering av image
Fastlåst plattformkode kontrollerer den innsendte commiten, gir bare feil som kan rettes, til AI og publiserer bare images som har bestått de samme kontrollene på nytt.
utrullingskø · 3 om gangen
apps/apidata: source commitkilde-commit · trailersapps/<tenant>/<app>Den innsendte kilden blir en commit i det private apps-repositoryet (med trailerne Railshot-Request og Railshot-Target), og grenen oppdateres uten force.
utrullingskø · 3 om gangen
apps/apikjøre · ta i bruk: workflow_dispatchløkke · basiskontroller L0–L3railshot-deploy.ymlBer om en kjøring med tenant, app, source_commit og target_id. Hvis svaret går tapt, sendes den ikke på nytt; i stedet søkes det etter kjøringer for samme commit.
kilde-commit · trailers
apps/<tenant>/<app>data: innsendt commitløkke · basiskontroller L0–L3railshot-deploy.ymlBare den innsendte commiten og fastlåst plattformkode (PLATFORM_REF) sjekkes ut.
SDK-reparasjon · bare feil som kan rettes
railshot-deploy.ymldata: forespørsel om reparasjon · betingetAI SDK providerKalles bare for feilklasser som kan rettes, og stoppes når den samme feilen gjentar seg eller grensen for forsøk nås. Bestått eller ikke bestått avgjøres av kontrollene, ikke av LLM-en.
release · publisering til GHCR · binding
railshot-deploy.ymldata: publiser kontrollerte imagesGHCREtter verifisering av bundelen som besto kontrollene, publiseres de samme imagene til GHCR. Ingenting bygges på nytt.
binding av CI-kjøring · observer
apps/apiobservasjon: kjøring · lesing av publiseringrailshot-deploy.ymlEn publisering teller bare når run id, source commit, target og app samsvarer med den aksepterte posten.
binding av CI-kjøring · observer
apps/apifeil · ukjent utfall: failed · publication_unverifiedoperasjonstilstand · kjøringsbindingapi/product-store.jsEn CI-feil eller en uverifisert publisering registreres med diagnostikk og sendes ikke videre til CD.
Ta i bruk → offentlig kontroll
Tar i bruk via config-Git og Argo CD bare når publiseringen samsvarer med det registrerte målet, og registrerer suksess først når den registrerte offentlige HTTPS-adressen er kontrollert.
release · publisering til GHCR · binding
railshot-deploy.ymldata: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiCD leser filene i publiseringsloggen via en klarert loader. CI lager ikke selv noen klyngeressurs, URL eller vellykket utrulling.
cd.js · deployPublished
apps/apikjøre · ta i bruk: apply · registrert målklarert config · registrert målgitops/bridge.pyKjører gitops/bridge.py med den klarerte configen bare når den registrerte appen og tenanten samsvarer med publiseringsloggen.
commit · push · ekstern tilbakelesing
gitops/bridge.pydata: workload commit · pushConfig-Git-repoCommitter bare workload.json på den registrerte stien i en dedikert gren, registrerer først push-hensikten, pusher og leser den eksterne revisjonen tilbake. En usikker push gjentas ikke.
Config-Git-repodata: revisionApplication · AppProject-kontroll
Argo CDRevisjonen i config-repositoryet som Argo CD-Application peker på.
Argo sync · observer
gitops/bridge.pykjøre · ta i bruk: sync · observerApplication · AppProject-kontrollArgo CDBer om en sync etter kontroll av AppProject; observasjon leser bare, uten sync.
Application · AppProject-kontroll
Argo CDkjøre · ta i bruk: ta i brukworkload · ServiceK3s-appklyngeTar i bruk arbeidslasten på den registrerte målklyngen.
workload · Service
K3s-appklyngedata: image-pull · digestGHCRHenter den publiserte digesten. En privat GHCR krever en dedikert pull-legitimasjon.
offentlig HTTPS-probe
gitops/bridge.pyobservasjon: HTTPS healthOffentlig HTTPS-URLKontrollerer bare HTTPS-health-adressen operatøren har registrert, uten omdirigeringer, for 200 (og forventet JSON hvis angitt).
Offentlig HTTPS-URLdata: offentlig stiworkload · Service
K3s-appklyngeDen offentlige stien (LB, NodePort, sertifikat) varierer etter provider og registrert mål.
cd.js · deployPublished
apps/apidata: succeeded · revision · URLoperasjonstilstand · kjøringsbindingapi/product-store.jsRegistreres som succeeded bare med cd.deployed, en revisjon, en vellykket offentlig HTTPS-kontroll, tidspunktet for den og en gyldig URL.
cd.js · deployPublished
apps/apifeil · ukjent utfall: unknown · krever avstemmingoperasjonstilstand · kjøringsbindingapi/product-store.jsEt utfall som ikke kan vites, forblir unknown; den samme applyen sendes verken på nytt eller rulles tilbake.
Observasjon · ikke dommen
Metrikker og prober avgjør ikke om utrullingen lyktes. Manglende, utdaterte og mislykkede verdier vises slik de er.
metrics observer
apps/apiobservasjon: PromQL-spørringPrometheusLeser seriene up, probe_success og Pod. Manglende, utdaterte eller mislykkede verdier vises i den tilstanden og gjøres aldri om til 0.
Prometheusobservasjon: scrape · probeworkload · Service
K3s-appklyngeExporter-scrape og HTTP-probe. Disse metrikkene brukes ikke til å avgjøre om utrullingen lyktes.
operasjonstilstand · kjøringsbinding
api/product-store.jsobservasjon: utrullingstilstand · historikknettskjerm · historikk · Insightsapps/dashboardNettskjermen og MCP-verktøyene leser de samme operasjonsloggene. Det siste forsøket og den gjeldende verifiserte utrullingen vises separat, og en fullført AI-oppgave er ikke en vellykket utrulling.
offentlig HTTPS-probe
gitops/bridge.pyobservasjon: HTTPS healthOffentlig HTTPS-URLKontrollerer bare HTTPS-health-adressen operatøren har registrert, uten omdirigeringer, for 200 (og forventet JSON hvis angitt).
Alle forbindelser med samme tykkelse. Velg en flyt for å fremheve bare dens vei, med nummererte steg.
- Heltrukket · retningen kilde, images og forespørsler flyter
- Stiplet · kjøreforespørsel, ta i bruk eller sync
- Lang strek-prikk · statuslesinger, prober og metrikker, atskilt fra dommen
- Kort strek · en registrert feil eller et ukjent utfall
- Kraftig svart linje · den valgte flyten; tallene angir rekkefølgen
- Boks · en eiende grense, kildestien i overskriften
- Indre chip · en komponent innenfor grensen
- Stiplet boks · utenfor plattformen
- Oransje kontur · der en modell tar beslutninger
- Produkt-API
- Utrullingslogger
- CD-utførelsesgrense
- Inngang · CI · mål
Bildet fra 2. oktober (bc61a5a) i docs/architecture/README.md er implementeringshistorikk; denne arkitekturen følger koden ved 645e28a. Providers og nettverksstier varierer etter registrert mål, og det betyr ikke at alle providers alltid er slått på.