Railshot
AI deployment & operations platform
Helyben készült webalkalmazás telepítése előkészített felhős és helyszíni környezetekbe, majd üzemeltetése.
AI-alapú telepítési és üzemeltetési platform, amely a helyben készült webalkalmazást előkészített felhős vagy helyszíni környezetekbe viszi, és tovább üzemelteti.
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
A webes felület és a felhasználó saját ágense ugyanazon a termék-API-n kér telepítést.
A termék az elfogadott telepítési kéréstől a CI-ellenőrzéseken és a konténerkép közzétételén át a Git-konfigurációig, az Argo CD-kivezetésig egy regisztrált célon és a nyilvános HTTPS-ellenőrzésig. Siker csak alkalmazott revízióval és nyilvános ellenőrzéssel együtt rögzül; a nem megismerhető eredmény unknown marad.
A webes felületről vagy egy MCP-n keresztül csatlakoztatott saját AI-ágensből beküldött projekt végigmegy a telepítési fájlok előkészítésén, a hibajavításon, a konténerkép közzétételén, a környezetbe való kivezetésen és a nyilvános URL ellenőrzésén; telepítés után ugyanaz a felület mutatja az előzményeket és a naplókat, és kezeli a frissítést, a leállítást, a folytatást és a törlést. Csapatprojekt.
A verseny fejlesztési időszaka: 2026. szeptember 28. – 2026. október 4.
A hackathon alatt készült webes felület és MCP-szerver. A távoli MCP OAuth-bejelentkezéssel küld be; a helyi mappákat a helyi MCP küldi be.
Beküldés → elfogadás
A webes felület, a távoli MCP és a helyi MCP ugyanazt a termék-API-t hívja, amely az ellenőrzött kérést queued állapotban rögzíti, és 202-vel válaszol.
Böngészős felhasználóadat: mappa · ZIP · GitHub-URLwebes felület · előzmények · Insights
apps/dashboardA forrás és egy regisztrált környezet a webes felületen választható ki.
webes felület · előzmények · Insights
apps/dashboardadat: ugyanaz a termék-API · /api/v1érvényesítés · cél · 202-es elfogadásapps/apiA webes felület azonos eredetről hívja a termék-API-t.
MCP-kliensadat: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsA távoli MCP OAuth-on keresztül csatlakozik, és bemenetként nyilvános GitHub-tárolót fogad.
OAuth MCP · deploy_repository
agent/remote-mcp.jsadat: ugyanaz a termék-APIérvényesítés · cél · 202-es elfogadásapps/apiA távoli MCP-szerver belső API-kliensével ugyanazt a telepítési API-t hívja.
railshot-local MCPadat: ZIP-feltöltés · deploy_local_projectérvényesítés · cél · 202-es elfogadás
apps/apiA felhasználó gépén futó stdio MCP ZIP-be tömörít egy mappát, és feltölti. Munkamenete nincs megosztva a távoli OAuth-munkamenettel.
érvényesítés · cél · 202-es elfogadás
apps/apiadat: queued rögzítve · 202műveleti állapot · futtatáskötésapi/product-store.jsEllenőrzi a bemenetet, a regisztrált célt, a kapacitást és az idempotenciakulcsot; a műveletet queued állapotban rögzíti, és 202-vel válaszol. A 202 elfogadást jelent, nem telepítést.
műveleti állapot · futtatáskötés
api/product-store.jsadat: sorrend a sorbantelepítési sor · egyszerre 3apps/apiAz elfogadás sorrendjében veszi elő, a párhuzamos telepítések korlátján belül (alapértelmezés szerint 3).
műveleti állapot · futtatáskötés
api/product-store.jsmegfigyelés: telepítési állapot · előzményekwebes felület · előzmények · Insightsapps/dashboardA webes felület és az MCP-eszközök ugyanazokat a műveleti feljegyzéseket olvassák. A legutóbbi kísérlet és a jelenlegi ellenőrzött telepítés külön jelenik meg, és egy befejezett AI-feladat nem telepítési siker.
CI-ellenőrzések → konténerkép közzététele
A rögzített platformkód ellenőrzi a beküldött commitot, csak a javítható hibákat adja át az AI-nak, és csak az ugyanazokon az ellenőrzéseken újra átment konténerképeket teszi közzé.
telepítési sor · egyszerre 3
apps/apiadat: source commitforrás-commit · trailerekapps/<tenant>/<app>A beküldött forrásból commit lesz a nem nyilvános apps-tárolóban (Railshot-Request és Railshot-Target trailerekkel), és az ág force nélkül frissül.
telepítési sor · egyszerre 3
apps/apifuttatás · alkalmazás: workflow_dispatchciklus · alapellenőrzések L0–L3railshot-deploy.ymlFuttatást kér a tenant, app, source_commit és target_id értékekkel. Ha a válasz elveszik, nem küldi újra, hanem megkeresi az ugyanahhoz a commithoz tartozó futtatásokat.
forrás-commit · trailerek
apps/<tenant>/<app>adat: beküldött commitciklus · alapellenőrzések L0–L3railshot-deploy.ymlCsak a beküldött commit és a rögzített platformkód (PLATFORM_REF) kerül checkoutra.
SDK-javítás · csak javítható hibák
railshot-deploy.ymladat: javítási kérés · feltételesAI SDK providerCsak javítható hibaosztályoknál hívja meg, és leáll, ha ugyanaz a hiba ismétlődik, vagy eléri a kísérleti korlátot. A sikerről vagy kudarcról az ellenőrzések döntenek, nem az LLM.
kiadás · GHCR-közzététel · kötés
railshot-deploy.ymladat: ellenőrzött konténerképek közzétételeGHCRAz ellenőrzéseken átment csomag igazolása után ugyanazok a konténerképek kerülnek a GHCR-be. Semmi sem épül újra.
CI-futtatás kötése · megfigyelés
apps/apimegfigyelés: futtatás · közzététel olvasásarailshot-deploy.ymlEgy közzététel csak akkor számít, ha a run id, a source commit, a cél és az app egyezik az elfogadott feljegyzéssel.
CI-futtatás kötése · megfigyelés
apps/apihiba · ismeretlen kimenetel: failed · publication_unverifiedműveleti állapot · futtatáskötésapi/product-store.jsA CI-hiba vagy az igazolatlan közzététel diagnosztikával együtt rögzül, és nem jut tovább a CD-hez.
Alkalmazás → nyilvános ellenőrzés
Csak akkor alkalmaz a config Giten és az Argo CD-n keresztül, ha a közzététel egyezik a regisztrált céllal, és sikert csak a regisztrált nyilvános HTTPS-cím sikeres ellenőrzése után rögzít.
kiadás · GHCR-közzététel · kötés
railshot-deploy.ymladat: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiA CD megbízható betöltővel olvassa a közzétételi feljegyzés fájljait. Maga a CI nem hoz létre klasztererőforrást, URL-t vagy telepítési sikert.
cd.js · deployPublished
apps/apifuttatás · alkalmazás: alkalmazás · regisztrált célmegbízható konfiguráció · regisztrált célgitops/bridge.pyA gitops/bridge.py-t a megbízható konfigurációval csak akkor futtatja, ha a regisztrált app és tenant egyezik a közzétételi feljegyzéssel.
commit · push · távoli visszaolvasás
gitops/bridge.pyadat: workload commit · pushConfig Git-tárolóCsak a workload.json-t commitolja egy dedikált ág regisztrált útvonalán, előbb rögzíti a push szándékát, majd pushol, és visszaolvassa a távoli revíziót. A bizonytalan push nem ismétlődik.
Config Git-tárolóadat: revisionApplication · AppProject-ellenőrzés
Argo CDA config-tároló revíziója, amelyre az Argo CD Application mutat.
Argo-szinkron · megfigyelés
gitops/bridge.pyfuttatás · alkalmazás: szinkronizálás · megfigyelésApplication · AppProject-ellenőrzésArgo CDAz AppProject ellenőrzése után szinkronizálást kér; megfigyeléskor csak olvas, szinkronizálás nélkül.
Application · AppProject-ellenőrzés
Argo CDfuttatás · alkalmazás: alkalmazásworkload · ServiceK3s alkalmazásklaszterA munkaterhelést a regisztrált célklaszterre alkalmazza.
workload · Service
K3s alkalmazásklaszteradat: konténerkép letöltése · digestGHCRA közzétett digestet tölti le. Nem nyilvános GHCR esetén dedikált letöltési hitelesítő adat kell.
nyilvános HTTPS-próba
gitops/bridge.pymegfigyelés: HTTPS healthNyilvános HTTPS-URLCsak az üzemeltető által regisztrált HTTPS health-címet ellenőrzi, átirányítások nélkül, 200-as válaszra (és a beállított elvárt JSON-ra).
Nyilvános HTTPS-URLadat: nyilvános útvonalworkload · Service
K3s alkalmazásklaszterA nyilvános útvonal (LB, NodePort, tanúsítvány) szolgáltatónként és regisztrált célonként eltér.
cd.js · deployPublished
apps/apiadat: succeeded · revision · URLműveleti állapot · futtatáskötésapi/product-store.jsCsak cd.deployed, revízió, sikeres nyilvános HTTPS-ellenőrzés, annak időpontja és érvényes URL esetén rögzül succeeded állapotként.
cd.js · deployPublished
apps/apihiba · ismeretlen kimenetel: unknown · egyeztetés szükségesműveleti állapot · futtatáskötésapi/product-store.jsA nem megismerhető eredmény unknown marad; ugyanazt az alkalmazást nem küldi újra, és nem is vonja vissza.
Megfigyelés · nem az ítélet
A metrikák és a próbák nem döntenek a telepítés sikeréről. A hiányzó, elavult és sikertelen értékek úgy jelennek meg, ahogy vannak.
metrics observer
apps/apimegfigyelés: PromQL-lekérdezésPrometheusAz up, a probe_success és a Pod-idősorokat olvassa. A hiányzó, elavult vagy sikertelen értékek ebben az állapotukban jelennek meg, soha nem lesz belőlük 0.
Prometheusmegfigyelés: scrape · probeworkload · Service
K3s alkalmazásklaszterExporter-scrape és HTTP-próba. Ezek a metrikák nem döntenek a telepítés sikeréről.
műveleti állapot · futtatáskötés
api/product-store.jsmegfigyelés: telepítési állapot · előzményekwebes felület · előzmények · Insightsapps/dashboardA webes felület és az MCP-eszközök ugyanazokat a műveleti feljegyzéseket olvassák. A legutóbbi kísérlet és a jelenlegi ellenőrzött telepítés külön jelenik meg, és egy befejezett AI-feladat nem telepítési siker.
nyilvános HTTPS-próba
gitops/bridge.pymegfigyelés: HTTPS healthNyilvános HTTPS-URLCsak az üzemeltető által regisztrált HTTPS health-címet ellenőrzi, átirányítások nélkül, 200-as válaszra (és a beállított elvárt JSON-ra).
Minden kapcsolat azonos vastagsággal. Válasszon egy folyamatot, hogy csak annak útvonala emelődjön ki, számozott lépésekkel.
- Folytonos · a forrás, a konténerképek és a kérések áramlási iránya
- Szaggatott · futtatási kérés, alkalmazás vagy szinkronizálás
- Hosszú pontvonalas · állapotlekérdezések, próbák és metrikák, az ítélettől elkülönítve
- Rövid szaggatott · rögzített hiba vagy ismeretlen kimenetel
- Vastag fekete vonal · a kiválasztott folyamat; a számok a sorrendet jelzik
- Doboz · birtokló határ, fejlécében a forrásútvonallal
- Belső chip · komponens a határon belül
- Szaggatott doboz · a platformon kívül
- Narancssárga körvonal · ahol egy modell dönt
- Termék-API
- Telepítési feljegyzések
- A CD végrehajtási határa
- Belépés · CI · cél
A docs/architecture/README.md október 2-i (bc61a5a) ábrája megvalósítási előzmény; ez az architektúra a 645e28a kódját követi. A szolgáltatók és a hálózati útvonalak regisztrált célonként eltérnek, és ez nem jelenti, hogy minden szolgáltató mindig be van kapcsolva.