Railshot
AI deployment & operations platform
Wdrożenie lokalnie zbudowanej aplikacji webowej w przygotowanych środowiskach chmurowych i lokalnych, a potem jej utrzymanie.
Platforma AI do wdrażania i utrzymania, która przenosi lokalnie zbudowaną aplikację webową do przygotowanych środowisk chmurowych lub lokalnych (on-premises) i dalej ją utrzymuje.
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
Ekran webowy i własny agent zlecają wdrożenie przez to samo API produktu.
Produkt od przyjętego żądania wdrożenia, przez kontrole CI i publikację obrazu, po konfigurację Git i wdrożenie Argo CD na zarejestrowanym celu oraz weryfikację publicznego HTTPS. Sukces jest zapisywany tylko przy zastosowanej rewizji i publicznej kontroli; wynik, którego nie da się poznać, pozostaje unknown.
Projekt zgłoszony z ekranu webowego albo z własnego agenta AI podłączonego przez MCP przechodzi przez przygotowanie plików wdrożeniowych, naprawę błędów, publikację obrazu, wdrożenie w środowisku i weryfikację publicznego adresu URL; po wdrożeniu ten sam ekran pokazuje historię i logi oraz pozwala zarządzać aktualizacjami, zatrzymaniem, wznowieniem i usunięciem. Projekt zespołowy.
Okres prac konkursowych September 28, 2026 to October 4, 2026
Ekran webowy i serwer MCP zbudowane podczas hackathonu. Zdalny MCP loguje się przez OAuth, aby zgłosić projekt; lokalne foldery zgłasza się przez lokalny MCP.
Zgłoszenie → przyjęcie
Ekran webowy, zdalny MCP i lokalny MCP wywołują to samo API produktu, które zapisuje sprawdzone żądanie jako queued i odpowiada 202.
Użytkownik przeglądarkidane: folder · ZIP · URL GitHubekran webowy · historia · Insights
apps/dashboardŹródło i zarejestrowane środowisko wybiera się na ekranie webowym.
ekran webowy · historia · Insights
apps/dashboarddane: to samo API produktu · /api/v1walidacja · cel · przyjęcie 202apps/apiEkran webowy wywołuje API produktu z tego samego originu.
Klient MCPdane: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsZdalny MCP łączy się przez OAuth i przyjmuje jako wejście publiczne repozytorium GitHub.
OAuth MCP · deploy_repository
agent/remote-mcp.jsdane: to samo API produktuwalidacja · cel · przyjęcie 202apps/apiZdalny serwer MCP wywołuje to samo API wdrożeń przez swojego wewnętrznego klienta API.
railshot-local MCPdane: wysłanie ZIP · deploy_local_projectwalidacja · cel · przyjęcie 202
apps/apiMCP stdio na komputerze użytkownika pakuje folder do ZIP i go wysyła. Jego sesja nie jest współdzielona ze zdalną sesją OAuth.
walidacja · cel · przyjęcie 202
apps/apidane: zapisane jako queued · 202stan operacji · powiązanie przebieguapi/product-store.jsSprawdzane są wejście, zarejestrowany cel, pojemność i klucz idempotencji; operacja jest zapisywana jako queued, a odpowiedzią jest 202. 202 oznacza przyjęcie, a nie wdrożenie.
stan operacji · powiązanie przebiegu
api/product-store.jsdane: kolejność w kolejcekolejka wdrożeń · 3 narazapps/apiPobierane w kolejności przyjęcia, w limicie współbieżnych wdrożeń (domyślnie 3).
stan operacji · powiązanie przebiegu
api/product-store.jsobserwacja: stan wdrożenia · historiaekran webowy · historia · Insightsapps/dashboardEkran webowy i narzędzia MCP odczytują te same zapisy operacji. Ostatnia próba i bieżące zweryfikowane wdrożenie są pokazywane osobno, a ukończone zadanie AI nie oznacza udanego wdrożenia.
Kontrole CI → publikacja obrazu
Przypięty kod platformy sprawdza zgłoszony commit, przekazuje AI tylko naprawialne awarie i publikuje tylko obrazy, które ponownie przeszły te same kontrole.
kolejka wdrożeń · 3 naraz
apps/apidane: source commitcommit źródłowy · traileryapps/<tenant>/<app>Zgłoszone źródło staje się commitem w prywatnym repozytorium apps (z trailerami Railshot-Request i Railshot-Target), a gałąź jest aktualizowana bez force.
kolejka wdrożeń · 3 naraz
apps/apiuruchomienie · zastosowanie: workflow_dispatchpętla · kontrole bazowe L0–L3railshot-deploy.ymlZleca przebieg z tenant, app, source_commit i target_id. Jeśli odpowiedź zginie, żądanie nie jest wysyłane ponownie; zamiast tego wyszukiwane są przebiegi dla tego samego commitu.
commit źródłowy · trailery
apps/<tenant>/<app>dane: zgłoszony commitpętla · kontrole bazowe L0–L3railshot-deploy.ymlWykonywany jest checkout tylko zgłoszonego commitu i przypiętego kodu platformy (PLATFORM_REF).
naprawa przez SDK · tylko naprawialne awarie
railshot-deploy.ymldane: prośba o poprawkę · warunkowoAI SDK providerWywoływane tylko dla naprawialnych klas awarii i zatrzymywane, gdy ta sama awaria się powtarza lub osiągnięto limit prób. O zaliczeniu lub porażce decydują kontrole, nie LLM.
wydanie · publikacja w GHCR · powiązanie
railshot-deploy.ymldane: publikacja sprawdzonych obrazówGHCRPo weryfikacji bundla, który przeszedł kontrole, te same obrazy są publikowane w GHCR. Nic nie jest przebudowywane.
powiązanie przebiegu CI · obserwacja
apps/apiobserwacja: odczyt przebiegu · publikacjirailshot-deploy.ymlPublikacja się liczy tylko wtedy, gdy jej run id, commit źródłowy, cel i aplikacja zgadzają się z przyjętym zapisem.
powiązanie przebiegu CI · obserwacja
apps/apiawaria · wynik nieznany: failed · publication_unverifiedstan operacji · powiązanie przebieguapi/product-store.jsAwaria CI lub niezweryfikowana publikacja jest zapisywana z diagnostyką i nie trafia do CD.
Zastosowanie → kontrola publiczna
Stosuje zmiany przez config Git i Argo CD tylko wtedy, gdy publikacja zgadza się z zarejestrowanym celem, a sukces zapisuje dopiero po pozytywnej kontroli zarejestrowanego publicznego adresu HTTPS.
wydanie · publikacja w GHCR · powiązanie
railshot-deploy.ymldane: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiCD odczytuje pliki zapisu publikacji przez zaufany loader. Samo CI nie tworzy żadnego zasobu klastra, adresu URL ani sukcesu wdrożenia.
cd.js · deployPublished
apps/apiuruchomienie · zastosowanie: zastosowanie · zarejestrowany celzaufana konfiguracja · zarejestrowany celgitops/bridge.pyUruchamia gitops/bridge.py z zaufaną konfiguracją tylko wtedy, gdy zarejestrowana aplikacja i tenant zgadzają się z zapisem publikacji.
commit · push · zdalny odczyt kontrolny
gitops/bridge.pydane: workload commit · pushRepozytorium Git konfiguracjiCommituje tylko workload.json w zarejestrowanej ścieżce dedykowanej gałęzi, najpierw zapisuje zamiar push, wykonuje push i odczytuje zdalną rewizję. Niepewny push nie jest powtarzany.
Repozytorium Git konfiguracjidane: revisionkontrola Application · AppProject
Argo CDRewizja repozytorium konfiguracji, na którą wskazuje Application w Argo CD.
synchronizacja Argo · obserwacja
gitops/bridge.pyuruchomienie · zastosowanie: synchronizacja · obserwacjakontrola Application · AppProjectArgo CDZleca synchronizację po sprawdzeniu AppProject; obserwacja tylko odczytuje, bez synchronizacji.
kontrola Application · AppProject
Argo CDuruchomienie · zastosowanie: zastosowanieworkload · ServiceKlaster aplikacji K3sStosuje workload w zarejestrowanym klastrze docelowym.
workload · Service
Klaster aplikacji K3sdane: pobranie obrazu · digestGHCRPobiera opublikowany digest. Prywatny GHCR wymaga dedykowanego poświadczenia do pobierania.
publiczna sonda HTTPS
gitops/bridge.pyobserwacja: HTTPS healthPubliczny adres HTTPSSprawdza wyłącznie zarejestrowany przez operatora adres HTTPS health, bez przekierowań, pod kątem 200 (i oczekiwanego JSON, jeśli ustawiono).
Publiczny adres HTTPSdane: ścieżka publicznaworkload · Service
Klaster aplikacji K3sŚcieżka publiczna (LB, NodePort, certyfikat) różni się w zależności od dostawcy i zarejestrowanego celu.
cd.js · deployPublished
apps/apidane: succeeded · revision · URLstan operacji · powiązanie przebieguapi/product-store.jsZapisywane jako succeeded tylko przy cd.deployed, rewizji, udanej publicznej kontroli HTTPS, jej czasie i poprawnym adresie URL.
cd.js · deployPublished
apps/apiawaria · wynik nieznany: unknown · wymaga uzgodnieniastan operacji · powiązanie przebieguapi/product-store.jsWynik, którego nie da się poznać, pozostaje unknown; to samo zastosowanie nie jest ani wysyłane ponownie, ani wycofywane.
Obserwacja · nie werdykt
Metryki i sondy nie decydują o sukcesie wdrożenia. Brakujące, nieaktualne i nieudane wartości są pokazywane bez zmian.
metrics observer
apps/apiobserwacja: zapytanie PromQLPrometheusOdczytuje serie up, probe_success i podów. Brakujące, nieaktualne lub nieudane wartości są pokazywane w tym stanie i nigdy nie zamieniane na 0.
Prometheusobserwacja: scrape · probeworkload · Service
Klaster aplikacji K3sScrape eksportera i sonda HTTP. Te metryki nie służą do rozstrzygania o sukcesie wdrożenia.
stan operacji · powiązanie przebiegu
api/product-store.jsobserwacja: stan wdrożenia · historiaekran webowy · historia · Insightsapps/dashboardEkran webowy i narzędzia MCP odczytują te same zapisy operacji. Ostatnia próba i bieżące zweryfikowane wdrożenie są pokazywane osobno, a ukończone zadanie AI nie oznacza udanego wdrożenia.
publiczna sonda HTTPS
gitops/bridge.pyobserwacja: HTTPS healthPubliczny adres HTTPSSprawdza wyłącznie zarejestrowany przez operatora adres HTTPS health, bez przekierowań, pod kątem 200 (i oczekiwanego JSON, jeśli ustawiono).
Każde połączenie z tą samą wagą. Wybór przepływu wyróżnia tylko jego ścieżkę z ponumerowanymi krokami.
- Linia ciągła · kierunek przepływu źródeł, obrazów i żądań
- Linia przerywana · żądanie uruchomienia, zastosowanie lub synchronizacja
- Długa kreska z kropką · odczyty stanu, sondy i metryki, oddzielnie od werdyktu
- Krótka kreska · zapisana awaria lub wynik nieznany
- Gruba czarna linia · wybrany przepływ; liczby podają kolejność
- Ramka · granica własności, ścieżka źródła w nagłówku
- Wewnętrzny element · komponent w tej granicy
- Przerywana ramka · poza platformą
- Pomarańczowy obrys · miejsce, w którym decyduje model
- API produktu
- Zapisy wdrożeń
- Granica wykonania CD
- Wejście · CI · cel
Rysunek z October 2 (bc61a5a) w docs/architecture/README.md to historia implementacji; ta architektura odpowiada kodowi 645e28a. Dostawcy i ścieżki sieciowe różnią się w zależności od zarejestrowanego celu, co nie oznacza, że każdy dostawca jest zawsze włączony.