RAILSHOT.
Tilbage til salen

Railshot

AI deployment & operations platform

Udrul en lokalt bygget webapp i forberedte cloud- og on-premises-miljøer, og driv den derefter.

En AI-platform til udrulning og drift, der bringer en lokalt bygget webapp til forberedte cloud- eller on-premises-miljøer og holder den kørende.

28. september 2026 til 4. oktober 2026 · Afsluttet

Teamprojekt · min del: planlægning og implementering af CI, CSP-klynger og Ansible-grænseflade, drift, kodegennemgang og integration i teamet

SoftBank Hackathon 2026 powered by KOREC & ProgateDeltager i indledende runde · udvælgelse til finalen offentliggøres 26. oktober 2026 (pr. 7. oktober 2026)

  • WebImplementeret · hackathon
  • MCP-serverImplementeret · ekstern · 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

Webskærmen og brugerens egen agent anmoder om udrulning via samme produkt-API.

Produktet fra en accepteret udrulningsanmodning gennem CI-kontroller og publicering af image til Git-konfiguration og Argo CD-udrulning på et registreret mål og verifikation af offentlig HTTPS. Succes registreres kun med både en anvendt revision og en offentlig kontrol; et udfald, der ikke kan fastslås, forbliver unknown.

Når et projekt indsendes fra webskærmen eller fra en AI-agent forbundet via MCP, gennemføres forberedelse af udrulningsfiler, reparation af fejl, publicering af image, udrulning i miljøet og verifikation af den offentlige URL; efter udrulningen viser samme skærm historik og logs og styrer opdateringer, stop, genoptagelser og sletning. Et teamprojekt.

Konkurrencens udviklingsperiode 28. september 2026 til 4. oktober 2026

Webskærmen og MCP-serveren, der blev bygget under hackathonen. Ekstern MCP logger ind med OAuth for at indsende; lokale mapper indsendes via den lokale MCP.

Produktarkitektur · tegnet ud fra kodestierne ved offentlig commit 645e28a
Railshots produktarkitekturKomponenter og forbindelser i Railshot-produktet. Webskærmen, den eksterne OAuth-MCP og en lokal MCP på brugerens computer anmoder om udrulning via samme produkt-API, der registrerer en kilde-commit og en CI-kørsel. CI afgør ud fra faste kontroller og publicerer de kontrollerede images til GHCR. CD-adapteren anvender via config-Git og Argo CD, kun når det registrerede mål svarer til publiceringsloggen, og kontrollerer derefter den registrerede offentlige HTTPS-adresse og registrerer udfaldet. Metrikker er observation, adskilt fra dommen.Browserbrugermappe · ZIP · GitHub-URLMCP-klientChatGPT · Codex · Clauderailshot-local MCPbrugerens computer · stdioGHCRimages via digestAI SDK providerCodex · Claude SDKConfig-Git-reporegistreret workload.jsonOffentlig HTTPS-URLregistreret health-stiPrometheusdriftens kontrol-VM · læsapps/dashboardwebskærm · historik · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/apivalidér · mål · accept med 202udrulningskø · 3 ad gangenbinding af CI-kørsel · observércd.js · deployPublishedmetrics observerapi/product-store.jsoperationstilstand · kørselsbindinggitops/bridge.pybetroet config · registreret målcommit · push · ekstern tilbagelæsningArgo sync · observéroffentlig HTTPS-probeArgo CDApplication · AppProject-kontrolapps/<tenant>/<app>kilde-commit · trailersrailshot-deploy.ymlløkke · basiskontroller L0–L3SDK-reparation · kun fejl, der kan rettessamme kontroller → testet bundlerelease · publicering til GHCR · bindingK3s-appklyngeworkload · ServiceRailshot-platformdriftsklynge · AWSGitHubprivat apps-repo · ActionsRegistreret måloffentlig sti pr. provider1 mappe · ZIP · GitHub-URL · Browserbruger → webskærm · historik · Insights12samme produkt-API · /api/v13 OAuth · deploy_repository · MCP-klient → OAuth MCP · deploy_repository34samme produkt-API5 ZIP-upload · deploy_local_project · railshot-local MCP → validér · mål · accept med 20256 registreret som queued · 202 · validér · mål · accept med 202 → operationstilstand · kørselsbinding67 rækkefølge i kø · operationstilstand · kørselsbinding → udrulningskø · 3 ad gangen78udrulningstilstand · historik1source commit2workflow_dispatch3indsendt commit4anmodning om reparation · betinget5publicér kontrollerede images6kørsel · læsning af publicering7 failed · publication_unverified · binding af CI-kørsel · observér → operationstilstand · kørselsbinding71images.json · spec · verdict · manifest2apply · registreret mål3workload commit · push4revision5sync · observér6anvend7image-pull · digest8HTTPS health9 offentlig sti · Offentlig HTTPS-URL → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → operationstilstand · kørselsbinding1011 unknown · kræver afstemning · cd.js · deployPublished → operationstilstand · kørselsbinding111PromQL-forespørgsel2scrape · probe3udrulningstilstand · historik4HTTPS health

Indsend → accept

Webskærmen, den eksterne MCP og den lokale MCP kalder samme produkt-API, der registrerer en kontrolleret forespørgsel som queued og svarer 202.

  1. Browserbrugerdata: mappe · ZIP · GitHub-URLwebskærm · historik · Insightsapps/dashboard

    Kilden og et registreret miljø vælges på webskærmen.

  2. webskærm · historik · Insightsapps/dashboarddata: samme produkt-API · /api/v1validér · mål · accept med 202apps/api

    Webskærmen kalder produkt-API'et fra samme oprindelse.

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

    Den eksterne MCP forbinder via OAuth og tager et offentligt GitHub-repository som input.

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.jsdata: samme produkt-APIvalidér · mål · accept med 202apps/api

    Den eksterne MCP-server kalder samme udrulnings-API via sin interne API-klient.

  5. railshot-local MCPdata: ZIP-upload · deploy_local_projectvalidér · mål · accept med 202apps/api

    Stdio-MCP'en på brugerens computer pakker en mappe som ZIP og uploader den. Dens session deles ikke med den eksterne OAuth-session.

  6. validér · mål · accept med 202apps/apidata: registreret som queued · 202operationstilstand · kørselsbindingapi/product-store.js

    Input, registreret mål, kapacitet og idempotensnøgle kontrolleres; operationen registreres som queued og besvares med 202. 202 betyder accepteret, ikke udrullet.

  7. operationstilstand · kørselsbindingapi/product-store.jsdata: rækkefølge i køudrulningskø · 3 ad gangenapps/api

    Tages i den rækkefølge, de blev accepteret, inden for grænsen for samtidige udrulninger (som standard 3).

  8. operationstilstand · kørselsbindingapi/product-store.jsobservation: udrulningstilstand · historikwebskærm · historik · Insightsapps/dashboard

    Webskærmen og MCP-værktøjerne læser de samme operationslogs. Det seneste forsøg og den aktuelle verificerede udrulning vises separat, og en færdig AI-opgave er ikke en vellykket udrulning.

CI-kontroller → publicering af image

Fastlåst platformkode kontrollerer den indsendte commit, giver kun fejl, der kan rettes, til AI og publicerer kun images, der har bestået de samme kontroller igen.

  1. udrulningskø · 3 ad gangenapps/apidata: source commitkilde-commit · trailersapps/<tenant>/<app>

    Den indsendte kilde bliver til en commit i det private apps-repository (med trailerne Railshot-Request og Railshot-Target), og grenen opdateres uden force.

  2. udrulningskø · 3 ad gangenapps/apikøre · anvende: workflow_dispatchløkke · basiskontroller L0–L3railshot-deploy.yml

    Anmoder om en kørsel med tenant, app, source_commit og target_id. Hvis svaret går tabt, sendes den ikke igen; i stedet søges der efter kørsler for samme commit.

  3. kilde-commit · trailersapps/<tenant>/<app>data: indsendt commitløkke · basiskontroller L0–L3railshot-deploy.yml

    Kun den indsendte commit og fastlåst platformkode (PLATFORM_REF) checkes ud.

  4. SDK-reparation · kun fejl, der kan rettesrailshot-deploy.ymldata: anmodning om reparation · betingetAI SDK provider

    Kaldes kun for fejlklasser, der kan rettes, og stoppes, når den samme fejl gentager sig, eller grænsen for forsøg nås. Bestået eller ikke bestået afgøres af kontrollerne, ikke af LLM'en.

  5. release · publicering til GHCR · bindingrailshot-deploy.ymldata: publicér kontrollerede imagesGHCR

    Efter verifikation af den bundle, der bestod kontrollerne, publiceres de samme images til GHCR. Intet bygges igen.

  6. binding af CI-kørsel · observérapps/apiobservation: kørsel · læsning af publiceringrailshot-deploy.yml

    En publicering tæller kun, når dens run id, source commit, target og app svarer til den accepterede post.

  7. binding af CI-kørsel · observérapps/apifejl · ukendt udfald: failed · publication_unverifiedoperationstilstand · kørselsbindingapi/product-store.js

    En CI-fejl eller en uverificeret publicering registreres med diagnostik og sendes ikke videre til CD.

Anvend → offentlig kontrol

Anvender via config-Git og Argo CD, kun når publiceringen svarer til det registrerede mål, og registrerer først succes, når den registrerede offentlige HTTPS-adresse er kontrolleret.

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

    CD læser publiceringsloggens filer via en betroet loader. CI skaber ikke selv nogen klyngeressource, URL eller vellykket udrulning.

  2. cd.js · deployPublishedapps/apikøre · anvende: apply · registreret målbetroet config · registreret målgitops/bridge.py

    Kører gitops/bridge.py med den betroede config, kun når den registrerede app og tenant svarer til publiceringsloggen.

  3. commit · push · ekstern tilbagelæsninggitops/bridge.pydata: workload commit · pushConfig-Git-repo

    Committer kun workload.json på den registrerede sti i en dedikeret gren, registrerer først push-hensigten, pusher og læser den eksterne revision tilbage. Et usikkert push gentages ikke.

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

    Revisionen i config-repositoryet, som Argo CD-Application peger på.

  5. Argo sync · observérgitops/bridge.pykøre · anvende: sync · observérApplication · AppProject-kontrolArgo CD

    Anmoder om en sync efter kontrol af AppProject; observation læser kun, uden sync.

  6. Application · AppProject-kontrolArgo CDkøre · anvende: anvendworkload · ServiceK3s-appklynge

    Anvender workloaden på den registrerede målklynge.

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

    Henter den publicerede digest. En privat GHCR kræver en dedikeret pull-legitimation.

  8. offentlig HTTPS-probegitops/bridge.pyobservation: HTTPS healthOffentlig HTTPS-URL

    Kontrollerer kun den HTTPS-health-adresse, operatøren har registreret, uden omdirigeringer, for 200 (og den forventede JSON, hvis angivet).

  9. Offentlig HTTPS-URLdata: offentlig stiworkload · ServiceK3s-appklynge

    Den offentlige sti (LB, NodePort, certifikat) varierer efter provider og registreret mål.

  10. cd.js · deployPublishedapps/apidata: succeeded · revision · URLoperationstilstand · kørselsbindingapi/product-store.js

    Registreres som succeeded kun med cd.deployed, en revision, en vellykket offentlig HTTPS-kontrol, tidspunktet for den og en gyldig URL.

  11. cd.js · deployPublishedapps/apifejl · ukendt udfald: unknown · kræver afstemningoperationstilstand · kørselsbindingapi/product-store.js

    Et udfald, der ikke kan kendes, forbliver unknown; den samme apply sendes hverken igen eller rulles tilbage.

Observation · ikke dommen

Metrikker og prober afgør ikke, om udrulningen lykkedes. Manglende, forældede og fejlede værdier vises, som de er.

  1. metrics observerapps/apiobservation: PromQL-forespørgselPrometheus

    Læser serierne up, probe_success og Pod. Manglende, forældede eller fejlede værdier vises i den tilstand og laves aldrig om til 0.

  2. Prometheusobservation: scrape · probeworkload · ServiceK3s-appklynge

    Exporter-scrape og HTTP-probe. Disse metrikker bruges ikke til at afgøre, om udrulningen lykkedes.

  3. operationstilstand · kørselsbindingapi/product-store.jsobservation: udrulningstilstand · historikwebskærm · historik · Insightsapps/dashboard

    Webskærmen og MCP-værktøjerne læser de samme operationslogs. Det seneste forsøg og den aktuelle verificerede udrulning vises separat, og en færdig AI-opgave er ikke en vellykket udrulning.

  4. offentlig HTTPS-probegitops/bridge.pyobservation: HTTPS healthOffentlig HTTPS-URL

    Kontrollerer kun den HTTPS-health-adresse, operatøren har registreret, uden omdirigeringer, for 200 (og den forventede JSON, hvis angivet).

Alle forbindelser med samme tykkelse. Vælg et flow for kun at fremhæve dets vej med nummererede trin.

  • Fuldt optrukket · den retning, kilde, images og forespørgsler flyder
  • Stiplet · kørselsanmodning, anvend eller sync
  • Lang streg-prik · statuslæsninger, prober og metrikker, adskilt fra dommen
  • Kort streg · en registreret fejl eller et ukendt udfald
  • Kraftig sort linje · det valgte flow; tal angiver rækkefølgen
  • Boks · en ejende grænse med kildestien i overskriften
  • Indre chip · en komponent inden for grænsen
  • Stiplet boks · uden for platformen
  • Orange kontur · hvor en model træffer beslutninger
  • Produkt-API
  • Udrulningslogs
  • CD-udførelsesgrænse
  • Indgang · CI · mål

Billedet fra 2. oktober (bc61a5a) i docs/architecture/README.md er implementeringshistorik; denne arkitektur følger koden ved 645e28a. Providers og netværksstier varierer efter registreret mål, og det betyder ikke, at alle providers altid er slået til.