RAILSHOT.
Natrag u dvoranu

Railshot

AI deployment & operations platform

Lokalno izrađenu web-aplikaciju postaviti u pripremljena oblačna i lokalna okruženja, a zatim je održavati u radu.

AI platforma za postavljanje i rad koja lokalno izrađenu web-aplikaciju odvodi u pripremljena oblačna ili lokalna okruženja i održava je u radu.

2026.09.28 – 2026.10.04 · završeno

Timski projekt · moj dio: planiranje i implementacija CI-ja, CSP klasteri i Ansible sučelje, rad sustava, timska recenzija koda i integracija

SoftBank Hackathon 2026 powered by KOREC & ProgateSudionik pretkola · odabir za finale bit će objavljen 2026.10.26 (stanje na 2026.10.07)

  • WebImplementirano · hakaton
  • MCP poslužiteljImplementirano · udaljeni · lokalni

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

Web-zaslon i korisnikov vlastiti agent traže postavljanje kroz isti API proizvoda.

Proizvod od prihvaćenog zahtjeva za postavljanje, preko provjera CI-ja i objave slike, do Git konfiguracije i uvođenja s Argo CD-om na registrirani cilj te javne provjere HTTPS-a. Uspjeh se bilježi samo kad postoje i primijenjena revizija i javna provjera; ishod koji se ne može znati ostaje unknown.

Projekt se predaje s web-zaslona ili iz vlastitog AI agenta povezanog preko MCP-a, a platforma ga vodi kroz pripremu datoteka za postavljanje, popravak neuspjeha, objavu slike, uvođenje u okruženje i provjeru javnog URL-a; nakon postavljanja isti zaslon prikazuje povijest i zapisnike te upravlja ažuriranjima, zaustavljanjima, nastavcima i brisanjem. Timski projekt.

Razvojno razdoblje natjecanja: September 28, 2026 – October 4, 2026

Web-zaslon i MCP poslužitelj izrađeni tijekom hakatona. Udaljeni MCP prijavljuje se OAuthom radi predaje; lokalne mape predaju se preko lokalnog MCP-a.

Arhitektura proizvoda · nacrtano prema putovima koda na javnom commitu 645e28a
Arhitektura proizvoda RailshotKomponente i veze proizvoda Railshot. Web-zaslon, udaljeni OAuth MCP i lokalni MCP na korisnikovu računalu traže postavljanje kroz isti API proizvoda, koji registrira commit izvora i izvođenje CI-ja. CI odlučuje fiksnim provjerama i objavljuje provjerene slike u GHCR. CD adapter primjenjuje kroz config Git i Argo CD samo kad se registrirani cilj podudara sa zapisom objave, zatim provjerava registriranu javnu HTTPS adresu i bilježi ishod. Metrike su opažanje, odvojeno od presude.Korisnik preglednikamapa · ZIP · GitHub URLMCP klijentChatGPT · Codex · Clauderailshot-local MCPkorisnikovo računalo · stdioGHCRslike prema digestuAI SDK providerCodex · Claude SDKRepozitorij config Gitregistrirani workload.jsonJavni HTTPS URLregistrirana health putanjaPrometheusupravljački VM za rad sustava · čitanjeapps/dashboardweb-zaslon · povijest · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/apivalidacija · cilj · prihvaćanje 202red postavljanja · 3 istodobnovezanje izvođenja CI-ja · promatranjecd.js · deployPublishedmetrics observerapi/product-store.jsstanje operacije · vezanje runagitops/bridge.pypouzdana konfiguracija · registrirani ciljcommit · push · udaljeno ponovno čitanjeArgo sinkronizacija · promatranjejavna HTTPS sondaArgo CDApplication · provjera AppProjectapps/<tenant>/<app>commit izvora · trailerirailshot-deploy.ymlpetlja · osnovne provjere L0–L3popravak kroz SDK · samo popravljivi neuspjesiiste provjere → provjereni bundleizdanje · objava u GHCR · vezanjeK3s klaster aplikacijaworkload · ServicePlatforma Railshotoperativni klaster · AWSGitHubprivatni repozitorij apps · ActionsRegistrirani ciljjavni put po pružatelju1 mapa · ZIP · GitHub URL · Korisnik preglednika → web-zaslon · povijest · Insights12isti API proizvoda · /api/v13 OAuth · deploy_repository · MCP klijent → OAuth MCP · deploy_repository34isti API proizvoda5 prijenos ZIP-a · deploy_local_project · railshot-local MCP → validacija · cilj · prihvaćanje 20256 zabilježeno queued · 202 · validacija · cilj · prihvaćanje 202 → stanje operacije · vezanje runa67 redoslijed u redu · stanje operacije · vezanje runa → red postavljanja · 3 istodobno78stanje postavljanja · povijest1source commit2workflow_dispatch3predani commit4zahtjev za popravak · uvjetno5objava provjerenih slika6izvođenje · čitanje objave7 failed · publication_unverified · vezanje izvođenja CI-ja · promatranje → stanje operacije · vezanje runa71images.json · spec · verdict · manifest2primjena · registrirani cilj3workload commit · push4revision5 sinkronizacija · promatranje · Argo sinkronizacija · promatranje → Application · provjera AppProject56primjena7pull slike · digest8HTTPS health9 javni put · Javni HTTPS URL → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → stanje operacije · vezanje runa1011 unknown · potrebno usklađivanje · cd.js · deployPublished → stanje operacije · vezanje runa111PromQL upit2scrape · probe3stanje postavljanja · povijest4HTTPS health

Predaja → prihvaćanje

Web-zaslon, udaljeni MCP i lokalni MCP pozivaju isti API proizvoda, koji provjereni zahtjev bilježi kao queued i odgovara s 202.

  1. Korisnik preglednikapodaci: mapa · ZIP · GitHub URLweb-zaslon · povijest · Insightsapps/dashboard

    Izvor i registrirano okruženje biraju se na web-zaslonu.

  2. web-zaslon · povijest · Insightsapps/dashboardpodaci: isti API proizvoda · /api/v1validacija · cilj · prihvaćanje 202apps/api

    Web-zaslon poziva API proizvoda s istog izvora (origin).

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

    Udaljeni MCP povezuje se preko OAutha i kao ulaz prima javni GitHub repozitorij.

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.jspodaci: isti API proizvodavalidacija · cilj · prihvaćanje 202apps/api

    Udaljeni MCP poslužitelj poziva isti API za postavljanje kroz svoj interni API klijent.

  5. railshot-local MCPpodaci: prijenos ZIP-a · deploy_local_projectvalidacija · cilj · prihvaćanje 202apps/api

    stdio MCP na korisnikovu računalu sažima mapu u ZIP i prenosi je. Njegova sesija nije dijeljena s udaljenom OAuth sesijom.

  6. validacija · cilj · prihvaćanje 202apps/apipodaci: zabilježeno queued · 202stanje operacije · vezanje runaapi/product-store.js

    Provjeravaju se ulaz, registrirani cilj, kapacitet i ključ idempotentnosti; operacija se bilježi kao queued i odgovara se s 202. 202 znači prihvaćeno, a ne postavljeno.

  7. stanje operacije · vezanje runaapi/product-store.jspodaci: redoslijed u redured postavljanja · 3 istodobnoapps/api

    Preuzimaju se redom prihvaćanja, unutar ograničenja istodobnih postavljanja (zadano 3).

  8. stanje operacije · vezanje runaapi/product-store.jsopažanje: stanje postavljanja · povijestweb-zaslon · povijest · Insightsapps/dashboard

    Web-zaslon i MCP alati čitaju iste zapise operacija. Posljednji pokušaj i trenutačno provjereno postavljanje prikazuju se zasebno, a dovršen AI zadatak nije uspjeh postavljanja.

Provjere CI-ja → objava slike

Fiksirani kod platforme provjerava predani commit, AI-ju predaje samo popravljive neuspjehe i objavljuje samo slike koje su ponovno prošle iste provjere.

  1. red postavljanja · 3 istodobnoapps/apipodaci: source commitcommit izvora · traileriapps/<tenant>/<app>

    Predani izvor postaje commit u privatnom repozitoriju apps (s trailerima Railshot-Request i Railshot-Target), a grana se ažurira bez forcea.

  2. red postavljanja · 3 istodobnoapps/apipokretanje · primjena: workflow_dispatchpetlja · osnovne provjere L0–L3railshot-deploy.yml

    Traži izvođenje s tenant, app, source_commit i target_id. Ako se odgovor izgubi, zahtjev se ne šalje ponovno; umjesto toga traže se izvođenja za isti commit.

  3. commit izvora · traileriapps/<tenant>/<app>podaci: predani commitpetlja · osnovne provjere L0–L3railshot-deploy.yml

    Checkout se radi samo za predani commit i fiksirani kod platforme (PLATFORM_REF).

  4. popravak kroz SDK · samo popravljivi neuspjesirailshot-deploy.ymlpodaci: zahtjev za popravak · uvjetnoAI SDK provider

    Poziva se samo za klase popravljivih neuspjeha i zaustavlja se kad se isti neuspjeh ponovi ili se dosegne ograničenje pokušaja. Prolaz ili pad odlučuju provjere, a ne LLM.

  5. izdanje · objava u GHCR · vezanjerailshot-deploy.ymlpodaci: objava provjerenih slikaGHCR

    Nakon provjere bundlea koji je prošao provjere iste se slike objavljuju u GHCR. Ništa se ne gradi ponovno.

  6. vezanje izvođenja CI-ja · promatranjeapps/apiopažanje: izvođenje · čitanje objaverailshot-deploy.yml

    Objava se računa samo kad se njezin run id, commit izvora, cilj i app podudaraju s prihvaćenim zapisom.

  7. vezanje izvođenja CI-ja · promatranjeapps/apineuspjeh · nepoznat ishod: failed · publication_unverifiedstanje operacije · vezanje runaapi/product-store.js

    Neuspjeh CI-ja ili neprovjerena objava bilježe se s dijagnostikom i ne prosljeđuju se CD-u.

Primjena → javna provjera

Primjenjuje kroz config Git i Argo CD samo kad se objava podudara s registriranim ciljem, a uspjeh bilježi tek nakon što registrirana javna HTTPS adresa prođe provjeru.

  1. izdanje · objava u GHCR · vezanjerailshot-deploy.ymlpodaci: images.json · spec · verdict · manifestcd.js · deployPublishedapps/api

    CD čita datoteke zapisa objave kroz pouzdani učitavač. Sam CI ne stvara resurse klastera, URL ni uspjeh postavljanja.

  2. cd.js · deployPublishedapps/apipokretanje · primjena: primjena · registrirani ciljpouzdana konfiguracija · registrirani ciljgitops/bridge.py

    Pokreće gitops/bridge.py s pouzdanom konfiguracijom samo kad se registrirani app i tenant podudaraju sa zapisom objave.

  3. commit · push · udaljeno ponovno čitanjegitops/bridge.pypodaci: workload commit · pushRepozitorij config Git

    Commita samo workload.json na registriranoj putanji namjenske grane, najprije bilježi namjeru pusha, izvodi push i ponovno čita udaljenu reviziju. Neizvjestan push ne ponavlja se.

  4. Repozitorij config Gitpodaci: revisionApplication · provjera AppProjectArgo CD

    Revizija konfiguracijskog repozitorija na koju pokazuje Application u Argo CD-u.

  5. Argo sinkronizacija · promatranjegitops/bridge.pypokretanje · primjena: sinkronizacija · promatranjeApplication · provjera AppProjectArgo CD

    Traži sinkronizaciju nakon provjere AppProjecta; promatranje samo čita, bez sinkronizacije.

  6. Application · provjera AppProjectArgo CDpokretanje · primjena: primjenaworkload · ServiceK3s klaster aplikacija

    Primjenjuje workload na registrirani ciljni klaster.

  7. workload · ServiceK3s klaster aplikacijapodaci: pull slike · digestGHCR

    Povlači objavljeni digest. Privatni GHCR zahtijeva namjenske vjerodajnice za pull.

  8. javna HTTPS sondagitops/bridge.pyopažanje: HTTPS healthJavni HTTPS URL

    Provjerava samo HTTPS health adresu koju je registrirao operater, bez preusmjeravanja, na 200 (i očekivani JSON ako je postavljen).

  9. Javni HTTPS URLpodaci: javni putworkload · ServiceK3s klaster aplikacija

    Javni put (LB, NodePort, certifikat) razlikuje se po pružatelju i registriranom cilju.

  10. cd.js · deployPublishedapps/apipodaci: succeeded · revision · URLstanje operacije · vezanje runaapi/product-store.js

    Bilježi se kao succeeded samo uz cd.deployed, reviziju, uspješnu javnu provjeru HTTPS-a, njezino vrijeme i valjan URL.

  11. cd.js · deployPublishedapps/apineuspjeh · nepoznat ishod: unknown · potrebno usklađivanjestanje operacije · vezanje runaapi/product-store.js

    Ishod koji se ne može znati ostaje unknown; ista se primjena niti ponovno šalje niti vraća.

Opažanje · nije presuda

Metrike i sonde ne odlučuju o uspjehu postavljanja. Nedostajuće, zastarjele i neuspjele vrijednosti prikazuju se takve kakve jesu.

  1. metrics observerapps/apiopažanje: PromQL upitPrometheus

    Čita nizove up, probe_success i Pod. Nedostajuće, zastarjele ili neuspjele vrijednosti prikazuju se u tom stanju i nikad se ne pretvaraju u 0.

  2. Prometheusopažanje: scrape · probeworkload · ServiceK3s klaster aplikacija

    Prikupljanje s exportera i HTTP sonda. Te se metrike ne koriste za odluku o uspjehu postavljanja.

  3. stanje operacije · vezanje runaapi/product-store.jsopažanje: stanje postavljanja · povijestweb-zaslon · povijest · Insightsapps/dashboard

    Web-zaslon i MCP alati čitaju iste zapise operacija. Posljednji pokušaj i trenutačno provjereno postavljanje prikazuju se zasebno, a dovršen AI zadatak nije uspjeh postavljanja.

  4. javna HTTPS sondagitops/bridge.pyopažanje: HTTPS healthJavni HTTPS URL

    Provjerava samo HTTPS health adresu koju je registrirao operater, bez preusmjeravanja, na 200 (i očekivani JSON ako je postavljen).

Sve veze iste debljine. Odaberite tijek kako biste istaknuli samo njegov put s numeriranim koracima.

  • Puna crta · smjer kojim teku izvor, slike i zahtjevi
  • Isprekidana crta · zahtjev za pokretanje, primjena ili sinkronizacija
  • Duga crta-točka · čitanja stanja, sonde i metrike, odvojeno od presude
  • Kratka crtica · zabilježeni neuspjeh ili nepoznat ishod
  • Debela crna crta · odabrani tijek; brojevi daju redoslijed
  • Okvir · granica vlasništva, putanja izvora u zaglavlju
  • Unutarnja pločica · komponenta unutar te granice
  • Isprekidani okvir · izvan platforme
  • Narančasti obrub · mjesto gdje model odlučuje
  • API proizvoda
  • Zapisi postavljanja
  • Granica izvođenja CD-a
  • Ulaz · CI · cilj

Slika od October 2 (bc61a5a) u docs/architecture/README.md povijest je implementacije; ova arhitektura slijedi kod 645e28a. Pružatelji i mrežni putovi razlikuju se po registriranom cilju, a to ne znači da je svaki pružatelj uvijek uključen.