Railshot
AI deployment & operations platform
Lokāli izveidota tīmekļa lietotne — izvietošanai sagatavotās mākoņa un iekšējās infrastruktūras vidēs un darbībai tajās.
AI izvietošanas un darbības platforma, kas lokāli izveidotu tīmekļa lietotni aizved uz sagatavotām mākoņa vai iekšējās infrastruktūras vidēm un uztur to darbībā.
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
Tīmekļa ekrāns un lietotāja paša aģents pieprasa izvietošanu caur to pašu produkta API.
Produkts no pieņemta izvietošanas pieprasījuma caur CI pārbaudēm un attēla publicēšanu līdz Git konfigurācijai un Argo CD ieviešanai reģistrētā mērķī un publiskā HTTPS verifikācijai. Panākums tiek reģistrēts tikai tad, ja ir gan piemērotā revīzija, gan publiskā pārbaude; iznākums, ko nevar zināt, paliek nezināms.
Projektu var iesniegt no tīmekļa ekrāna vai no sava AI aģenta, kas pieslēgts caur MCP, un platforma veic izvietošanas failu sagatavošanu, kļūmju labošanu, attēla publicēšanu, ieviešanu vidē un publiskā URL verifikāciju; pēc izvietošanas tajā pašā ekrānā redzama vēsture un žurnāli un tiek pārvaldīti atjauninājumi, apturēšana, atsākšana un dzēšana. Komandas projekts.
Sacensību izstrādes periods 2026. gada 28. septembris – 4. oktobris
Hakatona laikā izveidotais tīmekļa ekrāns un MCP serveris. Attālais MCP iesniegšanai piesakās ar OAuth; lokālās mapes tiek iesniegtas caur lokālo MCP.
Iesniegšana → pieņemšana
Tīmekļa ekrāns, attālais MCP un lokālais MCP izsauc to pašu produkta API, kas pārbaudītu pieprasījumu reģistrē kā queued un atbild ar 202.
Pārlūka lietotājsdati: mape · ZIP · GitHub URLtīmekļa ekrāns · vēsture · Insights
apps/dashboardPirmkods un reģistrētā vide tiek izvēlēti tīmekļa ekrānā.
tīmekļa ekrāns · vēsture · Insights
apps/dashboarddati: tas pats produkta API · /api/v1validācija · mērķis · 202 pieņemtsapps/apiTīmekļa ekrāns izsauc produkta API no tās pašas izcelsmes.
MCP klientsdati: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsAttālais MCP pieslēdzas ar OAuth un kā ievadi pieņem publisku GitHub repozitoriju.
OAuth MCP · deploy_repository
agent/remote-mcp.jsdati: tas pats produkta APIvalidācija · mērķis · 202 pieņemtsapps/apiAttālais MCP serveris izsauc to pašu izvietošanas API caur savu iekšējo API klientu.
railshot-local MCPdati: ZIP augšupielāde · deploy_local_projectvalidācija · mērķis · 202 pieņemts
apps/apistdio MCP lietotāja datorā saspiež mapi ZIP formātā un augšupielādē to. Tā sesija netiek koplietota ar attālo OAuth sesiju.
validācija · mērķis · 202 pieņemts
apps/apidati: reģistrēts kā queued · 202operācijas stāvoklis · palaidiena piesaisteapi/product-store.jsTiek pārbaudīta ievade, reģistrētais mērķis, kapacitāte un idempotences atslēga; operācija tiek reģistrēta kā queued, un atbilde ir 202. 202 nozīmē „pieņemts“, nevis „izvietots“.
operācijas stāvoklis · palaidiena piesaiste
api/product-store.jsdati: rindas secībaizvietošanas rinda · 3 vienlaikusapps/apiŅemti pieņemšanas secībā vienlaicīgo izvietošanu ierobežojuma robežās (pēc noklusējuma 3).
operācijas stāvoklis · palaidiena piesaiste
api/product-store.jsnovērošana: izvietošanas stāvoklis · vēsturetīmekļa ekrāns · vēsture · Insightsapps/dashboardTīmekļa ekrāns un MCP rīki lasa tos pašus operāciju ierakstus. Pēdējais mēģinājums un pašreizējā verificētā izvietošana tiek rādīti atsevišķi, un pabeigts AI uzdevums nav izvietošanas panākums.
CI pārbaudes → attēla publicēšana
Fiksētais platformas kods pārbauda iesniegto komitu, nodod AI tikai labojamas kļūmes un publicē tikai attēlus, kas atkal izturēja tās pašas pārbaudes.
izvietošanas rinda · 3 vienlaikus
apps/apidati: source commitpirmkoda komits · trailerapps/<tenant>/<app>Iesniegtais pirmkods kļūst par komitu privātajā apps repozitorijā (ar trailer Railshot-Request un Railshot-Target), un zars tiek atjaunināts bez force.
izvietošanas rinda · 3 vienlaikus
apps/apiizpilde · piemērošana: workflow_dispatchcikls · bāzes pārbaudes L0–L3railshot-deploy.ymlPieprasa palaidienu ar tenant, app, source_commit un target_id. Ja atbilde zūd, tā netiek sūtīta atkārtoti; tā vietā tiek meklēti tā paša komita palaidieni.
pirmkoda komits · trailer
apps/<tenant>/<app>dati: iesniegtais komitscikls · bāzes pārbaudes L0–L3railshot-deploy.ymlDarba kopijā tiek ņemts tikai iesniegtais komits un fiksētais platformas kods (PLATFORM_REF).
SDK labošana · tikai labojamas kļūmes
railshot-deploy.ymldati: labojuma pieprasījums · nosacītsAI SDK providerTiek izsaukts tikai labojamām kļūmju klasēm un apturēts, ja tā pati kļūme atkārtojas vai sasniegts mēģinājumu ierobežojums. Par izturēšanu vai neizturēšanu lemj pārbaudes, nevis LLM.
release · publicēšana GHCR · piesaiste
railshot-deploy.ymldati: pārbaudīto attēlu publicēšanaGHCRPēc pārbaudes izturējušā komplekta verificēšanas tie paši attēli tiek publicēti GHCR. Nekas netiek būvēts no jauna.
CI palaidiena piesaiste · novērošana
apps/apinovērošana: palaidiens · publikācijas nolasīšanarailshot-deploy.ymlPublikācija tiek ieskaitīta tikai tad, ja tās run id, pirmkoda komits, mērķis un lietotne atbilst pieņemtajam ierakstam.
CI palaidiena piesaiste · novērošana
apps/apikļūme · nezināms iznākums: failed · publication_unverifiedoperācijas stāvoklis · palaidiena piesaisteapi/product-store.jsCI kļūme vai neverificēta publikācija tiek reģistrēta ar diagnostiku un netiek nodota CD.
Piemērošana → publiskā pārbaude
Piemēro caur config Git un Argo CD tikai tad, ja publikācija atbilst reģistrētajam mērķim, un panākumu reģistrē tikai pēc reģistrētās publiskās HTTPS adreses pārbaudes.
release · publicēšana GHCR · piesaiste
railshot-deploy.ymldati: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiCD nolasa publikācijas ieraksta failus caur uzticamu ielādētāju. CI pats nerada klastera resursu, URL vai izvietošanas panākumu.
cd.js · deployPublished
apps/apiizpilde · piemērošana: piemērošana · reģistrēts mērķisuzticama konfigurācija · reģistrēts mērķisgitops/bridge.pyPalaiž gitops/bridge.py ar uzticamo konfigurāciju tikai tad, ja reģistrētā lietotne un tenant atbilst publikācijas ierakstam.
commit · push · attālā nolasīšana
gitops/bridge.pydati: workload commit · pushConfig Git repozitorijsKomitē tikai workload.json atsevišķa zara reģistrētajā ceļā, vispirms reģistrē push nodomu, veic push un nolasa attālo revīziju atpakaļ. Nenoteikts push netiek atkārtots.
Config Git repozitorijsdati: revisionApplication · AppProject pārbaude
Argo CDConfig repozitorija revīzija, uz kuru norāda Argo CD Application.
Argo sinhronizācija · novērošana
gitops/bridge.pyizpilde · piemērošana: sinhronizācija · novērošanaApplication · AppProject pārbaudeArgo CDPieprasa sinhronizāciju pēc AppProject pārbaudes; novērošana tikai lasa, bez sinhronizācijas.
Application · AppProject pārbaude
Argo CDizpilde · piemērošana: piemērošanaworkload · ServiceK3s lietotņu klasterisPiemēro darba slodzi reģistrētajā mērķa klasterī.
workload · Service
K3s lietotņu klasterisdati: attēla lejupielāde · jaucējvērtībaGHCRLejupielādē publicēto jaucējvērtību. Privātam GHCR vajadzīgi atsevišķi pull akreditācijas dati.
publiska HTTPS zonde
gitops/bridge.pynovērošana: HTTPS healthPublisks HTTPS URLPārbauda tikai operatora reģistrēto HTTPS health adresi, bez pāradresācijām, vai atbilde ir 200 (un sagaidītais JSON, ja iestatīts).
Publisks HTTPS URLdati: publiskais ceļšworkload · Service
K3s lietotņu klasterisPubliskais ceļš (LB, NodePort, sertifikāts) atšķiras atkarībā no nodrošinātāja un reģistrētā mērķa.
cd.js · deployPublished
apps/apidati: succeeded · revision · URLoperācijas stāvoklis · palaidiena piesaisteapi/product-store.jsTiek reģistrēts kā succeeded tikai tad, ja ir cd.deployed, revīzija, sekmīga publiskā HTTPS pārbaude, tās laiks un derīgs URL.
cd.js · deployPublished
apps/apikļūme · nezināms iznākums: unknown · nepieciešama saskaņošanaoperācijas stāvoklis · palaidiena piesaisteapi/product-store.jsIznākums, ko nevar zināt, paliek unknown; tā pati piemērošana netiek ne nosūtīta atkārtoti, ne atsaukta.
Novērošana · nav verdikts
Metrikas un zondes nelemj par izvietošanas panākumu. Trūkstošas, novecojušas un neizdevušās vērtības tiek rādītas, kādas tās ir.
metrics observer
apps/apinovērošana: PromQL vaicājumsPrometheusNolasa up, probe_success un Pod sērijas. Trūkstošas, novecojušas vai neizdevušās vērtības tiek rādītas šajā stāvoklī un nekad netiek pārvērstas par 0.
Prometheusnovērošana: scrape · probeworkload · Service
K3s lietotņu klasterisExporter scrape un HTTP zonde. Šīs metrikas netiek izmantotas, lai lemtu par izvietošanas panākumu.
operācijas stāvoklis · palaidiena piesaiste
api/product-store.jsnovērošana: izvietošanas stāvoklis · vēsturetīmekļa ekrāns · vēsture · Insightsapps/dashboardTīmekļa ekrāns un MCP rīki lasa tos pašus operāciju ierakstus. Pēdējais mēģinājums un pašreizējā verificētā izvietošana tiek rādīti atsevišķi, un pabeigts AI uzdevums nav izvietošanas panākums.
publiska HTTPS zonde
gitops/bridge.pynovērošana: HTTPS healthPublisks HTTPS URLPārbauda tikai operatora reģistrēto HTTPS health adresi, bez pāradresācijām, vai atbilde ir 200 (un sagaidītais JSON, ja iestatīts).
Visi savienojumi ar vienādu svaru. Izvēlieties plūsmu, lai izceltu tikai tās ceļu ar numurētiem soļiem.
- Nepārtraukta · pirmkoda, attēlu un pieprasījumu plūsmas virziens
- Raustīta · palaišanas pieprasījums, piemērošana vai sinhronizācija
- Gara svītra-punkts · stāvokļa nolasījumi, zondes un metrikas, nošķirti no verdikta
- Īsa svītra · reģistrēta kļūme vai nezināms iznākums
- Bieza melna līnija · izvēlētā plūsma; skaitļi norāda secību
- Rāmis · īpašumtiesību robeža, avota ceļš galvenē
- Iekšējā plāksnīte · komponents šīs robežas iekšienē
- Raustīts rāmis · ārpus platformas
- Oranža kontūra · vieta, kur lemj modelis
- Produkta API
- Izvietošanas ieraksti
- CD izpildes robeža
- Ieeja · CI · mērķis
docs/architecture/README.md 2. oktobra (bc61a5a) attēls ir implementācijas vēsture; šī arhitektūra seko kodam 645e28a. Nodrošinātāji un tīkla ceļi atšķiras atkarībā no reģistrētā mērķa, un tas nenozīmē, ka katrs nodrošinātājs vienmēr ir ieslēgts.