RAILSHOT.
Înapoi în sală

Railshot

AI deployment & operations platform

Implementarea unei aplicații web construite local în medii cloud și on-premises pregătite, apoi operarea ei.

O platformă AI de implementare și operare care duce o aplicație web construită local în medii cloud sau on-premises pregătite și o ține în funcțiune.

28 septembrie 2026 – 4 octombrie 2026 · Încheiat

Proiect de echipă · partea mea: planificarea și implementarea CI, clusterele CSP și interfața Ansible, operare, revizuirea codului și integrare în echipă

SoftBank Hackathon 2026 powered by KOREC & ProgateParticipant în preliminarii · selecția pentru finală va fi anunțată pe 26 octombrie 2026 (la 7 octombrie 2026)

  • Interfață webImplementat · hackathon
  • Server MCPImplementat · la distanță · local

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

Interfața web și agentul propriu al utilizatorului cer implementarea prin același API al produsului.

Produsul, de la o cerere de implementare acceptată, prin verificările CI și publicarea imaginii, până la configurația Git și lansarea Argo CD pe o țintă înregistrată și verificarea HTTPS publică. Succesul este înregistrat doar cu o revizie aplicată și o verificare publică; un rezultat care nu poate fi cunoscut rămâne unknown.

Un proiect trimis din interfața web sau dintr-un agent AI propriu conectat prin MCP trece prin pregătirea fișierelor de implementare, repararea eșecurilor, publicarea imaginii, lansarea în mediu și verificarea URL-ului public; după implementare, același ecran arată istoricul și jurnalele și gestionează actualizările, oprirea, reluarea și ștergerea. Un proiect de echipă.

Perioada de dezvoltare a competiției: 28 septembrie 2026 – 4 octombrie 2026

Interfața web și serverul MCP construite în timpul hackathonului. MCP-ul la distanță se autentifică prin OAuth pentru a trimite; folderele locale sunt trimise prin MCP-ul local.

Arhitectura produsului · desenată după căile de cod din commitul public 645e28a
Arhitectura produsului RailshotComponentele și conexiunile produsului Railshot. Interfața web, MCP-ul OAuth la distanță și un MCP local de pe computerul utilizatorului cer implementarea prin același API al produsului, care înregistrează un commit sursă și o rulare CI. CI decide prin verificări fixe și publică imaginile verificate în GHCR. Adaptorul CD aplică prin config Git și Argo CD doar când ținta înregistrată corespunde înregistrării de publicare, apoi verifică adresa HTTPS publică înregistrată și înregistrează rezultatul. Metricile sunt observație, separată de verdict.Utilizator în browserfolder · ZIP · URL GitHubClient MCPChatGPT · Codex · Clauderailshot-local MCPcomputerul utilizatorului · stdioGHCRimagini prin digestAI SDK providerCodex · Claude SDKDepozitul config Gitworkload.json înregistratURL HTTPS publiccale de health înregistratăPrometheusVM de control al operării · citireapps/dashboardinterfață web · istoric · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/apivalidare · țintă · acceptare 202coadă de implementare · câte 3legarea rulării CI · observarecd.js · deployPublishedmetrics observerapi/product-store.jsstarea operației · legarea rulăriigitops/bridge.pyconfigurație de încredere · țintă înregistratăcommit · push · recitire de pe remotesincronizare Argo · observaresondă HTTPS publicăArgo CDApplication · verificare AppProjectapps/<tenant>/<app>commit sursă · trailererailshot-deploy.ymlbuclă · verificări de bază L0–L3reparare SDK · doar eșecuri reparabileaceleași verificări → pachet testatversiune · publicare în GHCR · legareClusterul de aplicații K3sworkload · ServicePlatforma Railshotcluster de operare · AWSGitHubdepozit privat apps · ActionsȚintă înregistratăcale publică per furnizor1 folder · ZIP · URL GitHub · Utilizator în browser → interfață web · istoric · Insights12același API al produsului · /api/v13 OAuth · deploy_repository · Client MCP → OAuth MCP · deploy_repository34același API al produsului5 încărcare ZIP · deploy_local_project · railshot-local MCP → validare · țintă · acceptare 20256 queued înregistrat · 202 · validare · țintă · acceptare 202 → starea operației · legarea rulării67 ordinea din coadă · starea operației · legarea rulării → coadă de implementare · câte 378starea implementării · istoric1source commit2workflow_dispatch3commitul trimis4cerere de reparare · condiționată5publicarea imaginilor verificate6rulare · citirea publicării7 failed · publication_unverified · legarea rulării CI · observare → starea operației · legarea rulării71images.json · spec · verdict · manifest2aplicare · țintă înregistrată3workload commit · push4revision5 sincronizare · observare · sincronizare Argo · observare → Application · verificare AppProject56aplicare7pull de imagine · digest8HTTPS health9 cale publică · URL HTTPS public → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → starea operației · legarea rulării1011 unknown · necesită reconciliere · cd.js · deployPublished → starea operației · legarea rulării111interogare PromQL2scrape · probe3starea implementării · istoric4HTTPS health

Trimitere → acceptare

Interfața web, MCP-ul la distanță și MCP-ul local apelează același API al produsului, care înregistrează o cerere verificată ca queued și răspunde cu 202.

  1. Utilizator în browserdate: folder · ZIP · URL GitHubinterfață web · istoric · Insightsapps/dashboard

    Sursa și un mediu înregistrat sunt alese în interfața web.

  2. interfață web · istoric · Insightsapps/dashboarddate: același API al produsului · /api/v1validare · țintă · acceptare 202apps/api

    Interfața web apelează API-ul produsului de pe aceeași origine.

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

    MCP-ul la distanță se conectează prin OAuth și primește ca intrare un depozit GitHub public.

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.jsdate: același API al produsuluivalidare · țintă · acceptare 202apps/api

    Serverul MCP la distanță apelează același API de implementare prin clientul său API intern.

  5. railshot-local MCPdate: încărcare ZIP · deploy_local_projectvalidare · țintă · acceptare 202apps/api

    MCP-ul stdio de pe computerul utilizatorului arhivează un folder în ZIP și îl încarcă. Sesiunea lui nu este partajată cu sesiunea OAuth la distanță.

  6. validare · țintă · acceptare 202apps/apidate: queued înregistrat · 202starea operației · legarea rulăriiapi/product-store.js

    Sunt verificate intrarea, ținta înregistrată, capacitatea și cheia de idempotență; operația este înregistrată ca queued și se răspunde cu 202. Un 202 înseamnă acceptat, nu implementat.

  7. starea operației · legarea rulăriiapi/product-store.jsdate: ordinea din coadăcoadă de implementare · câte 3apps/api

    Preluate în ordinea acceptării, în limita implementărilor concurente (implicit 3).

  8. starea operației · legarea rulăriiapi/product-store.jsobservație: starea implementării · istoricinterfață web · istoric · Insightsapps/dashboard

    Interfața web și instrumentele MCP citesc aceleași înregistrări ale operațiilor. Ultima încercare și implementarea verificată curentă sunt afișate separat, iar o sarcină AI încheiată nu înseamnă o implementare reușită.

Verificări CI → publicarea imaginii

Codul de platformă fixat verifică commitul trimis, predă AI-ului doar eșecurile reparabile și publică doar imaginile care au trecut din nou aceleași verificări.

  1. coadă de implementare · câte 3apps/apidate: source commitcommit sursă · trailereapps/<tenant>/<app>

    Sursa trimisă devine un commit în depozitul privat apps (cu trailerele Railshot-Request și Railshot-Target), iar ramura este actualizată fără force.

  2. coadă de implementare · câte 3apps/apirulare · aplicare: workflow_dispatchbuclă · verificări de bază L0–L3railshot-deploy.yml

    Cere o rulare cu tenant, app, source_commit și target_id. Dacă răspunsul se pierde, cererea nu este trimisă din nou; sunt căutate în schimb rulările pentru același commit.

  3. commit sursă · trailereapps/<tenant>/<app>date: commitul trimisbuclă · verificări de bază L0–L3railshot-deploy.yml

    Se face checkout doar pentru commitul trimis și pentru codul de platformă fixat (PLATFORM_REF).

  4. reparare SDK · doar eșecuri reparabilerailshot-deploy.ymldate: cerere de reparare · condiționatăAI SDK provider

    Este apelat doar pentru clase de eșec reparabile și se oprește când același eșec se repetă sau se atinge limita de încercări. Trecerea sau eșecul sunt decise de verificări, nu de LLM.

  5. versiune · publicare în GHCR · legarerailshot-deploy.ymldate: publicarea imaginilor verificateGHCR

    După verificarea pachetului care a trecut verificările, aceleași imagini sunt publicate în GHCR. Nu se reconstruiește nimic.

  6. legarea rulării CI · observareapps/apiobservație: rulare · citirea publicăriirailshot-deploy.yml

    O publicare contează doar când run id, source commit, ținta și aplicația corespund înregistrării acceptate.

  7. legarea rulării CI · observareapps/apieșec · rezultat necunoscut: failed · publication_unverifiedstarea operației · legarea rulăriiapi/product-store.js

    Un eșec CI sau o publicare neverificată este înregistrată cu diagnostic și nu este transmisă către CD.

Aplicare → verificare publică

Aplică prin config Git și Argo CD doar când publicarea corespunde țintei înregistrate și înregistrează succesul doar după ce adresa HTTPS publică înregistrată este confirmată.

  1. versiune · publicare în GHCR · legarerailshot-deploy.ymldate: images.json · spec · verdict · manifestcd.js · deployPublishedapps/api

    CD citește fișierele înregistrării de publicare printr-un loader de încredere. CI nu creează el însuși nicio resursă de cluster, URL sau succes de implementare.

  2. cd.js · deployPublishedapps/apirulare · aplicare: aplicare · țintă înregistratăconfigurație de încredere · țintă înregistratăgitops/bridge.py

    Rulează gitops/bridge.py cu configurația de încredere doar când aplicația și tenantul înregistrate corespund înregistrării de publicare.

  3. commit · push · recitire de pe remotegitops/bridge.pydate: workload commit · pushDepozitul config Git

    Face commit doar pentru workload.json la calea înregistrată a unei ramuri dedicate, înregistrează mai întâi intenția de push, face push și recitește revizia de pe remote. Un push incert nu este repetat.

  4. Depozitul config Gitdate: revisionApplication · verificare AppProjectArgo CD

    Revizia depozitului de configurație spre care indică Application din Argo CD.

  5. sincronizare Argo · observaregitops/bridge.pyrulare · aplicare: sincronizare · observareApplication · verificare AppProjectArgo CD

    Cere o sincronizare după verificarea AppProject; la observare doar citește, fără sincronizare.

  6. Application · verificare AppProjectArgo CDrulare · aplicare: aplicareworkload · ServiceClusterul de aplicații K3s

    Aplică sarcina de lucru pe clusterul țintă înregistrat.

  7. workload · ServiceClusterul de aplicații K3sdate: pull de imagine · digestGHCR

    Descarcă digest-ul publicat. Un GHCR privat necesită o credențială de pull dedicată.

  8. sondă HTTPS publicăgitops/bridge.pyobservație: HTTPS healthURL HTTPS public

    Verifică doar adresa HTTPS de health înregistrată de operator, fără redirecționări, pentru 200 (și JSON-ul așteptat, dacă este setat).

  9. URL HTTPS publicdate: cale publicăworkload · ServiceClusterul de aplicații K3s

    Calea publică (LB, NodePort, certificat) diferă în funcție de furnizor și de ținta înregistrată.

  10. cd.js · deployPublishedapps/apidate: succeeded · revision · URLstarea operației · legarea rulăriiapi/product-store.js

    Este înregistrat ca succeeded doar cu cd.deployed, o revizie, o verificare HTTPS publică reușită, momentul ei și un URL valid.

  11. cd.js · deployPublishedapps/apieșec · rezultat necunoscut: unknown · necesită reconcilierestarea operației · legarea rulăriiapi/product-store.js

    Un rezultat care nu poate fi cunoscut rămâne unknown; aceeași aplicare nu este nici retrimisă, nici anulată.

Observație · nu verdictul

Metricile și sondele nu decid succesul implementării. Valorile lipsă, învechite și eșuate sunt afișate ca atare.

  1. metrics observerapps/apiobservație: interogare PromQLPrometheus

    Citește seriile up, probe_success și Pod. Valorile lipsă, învechite sau eșuate sunt afișate în acea stare și nu sunt transformate niciodată în 0.

  2. Prometheusobservație: scrape · probeworkload · ServiceClusterul de aplicații K3s

    Scrape de exporter și sondă HTTP. Aceste metrici nu sunt folosite pentru a decide succesul implementării.

  3. starea operației · legarea rulăriiapi/product-store.jsobservație: starea implementării · istoricinterfață web · istoric · Insightsapps/dashboard

    Interfața web și instrumentele MCP citesc aceleași înregistrări ale operațiilor. Ultima încercare și implementarea verificată curentă sunt afișate separat, iar o sarcină AI încheiată nu înseamnă o implementare reușită.

  4. sondă HTTPS publicăgitops/bridge.pyobservație: HTTPS healthURL HTTPS public

    Verifică doar adresa HTTPS de health înregistrată de operator, fără redirecționări, pentru 200 (și JSON-ul așteptat, dacă este setat).

Fiecare conexiune cu aceeași grosime. Alegeți un flux pentru a evidenția doar traseul lui, cu pași numerotați.

  • Continuă · direcția în care circulă sursa, imaginile și cererile
  • Întreruptă · cerere de rulare, aplicare sau sincronizare
  • Linie-punct lungă · citiri de stare, sonde și metrici, separate de verdict
  • Liniuță scurtă · un eșec înregistrat sau un rezultat necunoscut
  • Linie neagră groasă · fluxul selectat; numerele dau ordinea
  • Casetă · o graniță cu proprietar, cu calea sursei în antet
  • Etichetă interioară · o componentă din acea graniță
  • Casetă întreruptă · în afara platformei
  • Contur portocaliu · locul în care decide un model
  • API-ul produsului
  • Înregistrările implementărilor
  • Granița de execuție CD
  • Intrare · CI · țintă

Imaginea din 2 octombrie (bc61a5a) din docs/architecture/README.md este istoric de implementare; această arhitectură urmează codul 645e28a. Furnizorii și căile de rețea diferă în funcție de ținta înregistrată, iar asta nu înseamnă că fiecare furnizor este mereu activ.