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.
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
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.
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.
Korisnik preglednikapodaci: mapa · ZIP · GitHub URLweb-zaslon · povijest · Insights
apps/dashboardIzvor i registrirano okruženje biraju se na web-zaslonu.
web-zaslon · povijest · Insights
apps/dashboardpodaci: isti API proizvoda · /api/v1validacija · cilj · prihvaćanje 202apps/apiWeb-zaslon poziva API proizvoda s istog izvora (origin).
MCP klijentpodaci: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsUdaljeni MCP povezuje se preko OAutha i kao ulaz prima javni GitHub repozitorij.
OAuth MCP · deploy_repository
agent/remote-mcp.jspodaci: isti API proizvodavalidacija · cilj · prihvaćanje 202apps/apiUdaljeni MCP poslužitelj poziva isti API za postavljanje kroz svoj interni API klijent.
railshot-local MCPpodaci: prijenos ZIP-a · deploy_local_projectvalidacija · cilj · prihvaćanje 202
apps/apistdio MCP na korisnikovu računalu sažima mapu u ZIP i prenosi je. Njegova sesija nije dijeljena s udaljenom OAuth sesijom.
validacija · cilj · prihvaćanje 202
apps/apipodaci: zabilježeno queued · 202stanje operacije · vezanje runaapi/product-store.jsProvjeravaju 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.
stanje operacije · vezanje runa
api/product-store.jspodaci: redoslijed u redured postavljanja · 3 istodobnoapps/apiPreuzimaju se redom prihvaćanja, unutar ograničenja istodobnih postavljanja (zadano 3).
stanje operacije · vezanje runa
api/product-store.jsopažanje: stanje postavljanja · povijestweb-zaslon · povijest · Insightsapps/dashboardWeb-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.
red postavljanja · 3 istodobno
apps/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.
red postavljanja · 3 istodobno
apps/apipokretanje · primjena: workflow_dispatchpetlja · osnovne provjere L0–L3railshot-deploy.ymlTraž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.
commit izvora · traileri
apps/<tenant>/<app>podaci: predani commitpetlja · osnovne provjere L0–L3railshot-deploy.ymlCheckout se radi samo za predani commit i fiksirani kod platforme (PLATFORM_REF).
popravak kroz SDK · samo popravljivi neuspjesi
railshot-deploy.ymlpodaci: zahtjev za popravak · uvjetnoAI SDK providerPoziva 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.
izdanje · objava u GHCR · vezanje
railshot-deploy.ymlpodaci: objava provjerenih slikaGHCRNakon provjere bundlea koji je prošao provjere iste se slike objavljuju u GHCR. Ništa se ne gradi ponovno.
vezanje izvođenja CI-ja · promatranje
apps/apiopažanje: izvođenje · čitanje objaverailshot-deploy.ymlObjava se računa samo kad se njezin run id, commit izvora, cilj i app podudaraju s prihvaćenim zapisom.
vezanje izvođenja CI-ja · promatranje
apps/apineuspjeh · nepoznat ishod: failed · publication_unverifiedstanje operacije · vezanje runaapi/product-store.jsNeuspjeh 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.
izdanje · objava u GHCR · vezanje
railshot-deploy.ymlpodaci: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiCD čita datoteke zapisa objave kroz pouzdani učitavač. Sam CI ne stvara resurse klastera, URL ni uspjeh postavljanja.
cd.js · deployPublished
apps/apipokretanje · primjena: primjena · registrirani ciljpouzdana konfiguracija · registrirani ciljgitops/bridge.pyPokreće gitops/bridge.py s pouzdanom konfiguracijom samo kad se registrirani app i tenant podudaraju sa zapisom objave.
commit · push · udaljeno ponovno čitanje
gitops/bridge.pypodaci: workload commit · pushRepozitorij config GitCommita 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.
Repozitorij config Gitpodaci: revisionApplication · provjera AppProject
Argo CDRevizija konfiguracijskog repozitorija na koju pokazuje Application u Argo CD-u.
Argo sinkronizacija · promatranje
gitops/bridge.pypokretanje · primjena: sinkronizacija · promatranjeApplication · provjera AppProjectArgo CDTraži sinkronizaciju nakon provjere AppProjecta; promatranje samo čita, bez sinkronizacije.
Application · provjera AppProject
Argo CDpokretanje · primjena: primjenaworkload · ServiceK3s klaster aplikacijaPrimjenjuje workload na registrirani ciljni klaster.
workload · Service
K3s klaster aplikacijapodaci: pull slike · digestGHCRPovlači objavljeni digest. Privatni GHCR zahtijeva namjenske vjerodajnice za pull.
javna HTTPS sonda
gitops/bridge.pyopažanje: HTTPS healthJavni HTTPS URLProvjerava samo HTTPS health adresu koju je registrirao operater, bez preusmjeravanja, na 200 (i očekivani JSON ako je postavljen).
Javni HTTPS URLpodaci: javni putworkload · Service
K3s klaster aplikacijaJavni put (LB, NodePort, certifikat) razlikuje se po pružatelju i registriranom cilju.
cd.js · deployPublished
apps/apipodaci: succeeded · revision · URLstanje operacije · vezanje runaapi/product-store.jsBilježi se kao succeeded samo uz cd.deployed, reviziju, uspješnu javnu provjeru HTTPS-a, njezino vrijeme i valjan URL.
cd.js · deployPublished
apps/apineuspjeh · nepoznat ishod: unknown · potrebno usklađivanjestanje operacije · vezanje runaapi/product-store.jsIshod 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.
metrics observer
apps/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.
Prometheusopažanje: scrape · probeworkload · Service
K3s klaster aplikacijaPrikupljanje s exportera i HTTP sonda. Te se metrike ne koriste za odluku o uspjehu postavljanja.
stanje operacije · vezanje runa
api/product-store.jsopažanje: stanje postavljanja · povijestweb-zaslon · povijest · Insightsapps/dashboardWeb-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.
javna HTTPS sonda
gitops/bridge.pyopažanje: HTTPS healthJavni HTTPS URLProvjerava 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.