RAILSHOT.
返回展廳

Railshot

AI deployment & operations platform

將本機建置的網頁應用程式,部署到備妥的雲端與地端環境並維運。

把在本機建置的網頁應用程式部署到備妥的雲端或地端環境,並持續維運的 AI 部署與維運平台。

2026.09.28 — 2026.10.04 · 已結束

團隊專案 · 負責:CI 規劃與實作、CSP 叢集與 Ansible 介面、維運、團隊程式碼審查與整合

SoftBank Hackathon 2026 powered by KOREC & Progate參加預賽 · 決賽入選名單預定 2026年10月26日公布(截至 2026年10月7日)

  • 網頁已實作 · 黑客松
  • MCP 伺服器已實作 · 遠端 · 本機

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

網頁畫面與自有代理透過同一個產品 API 請求部署。

從受理的部署請求,經 CI 檢查與映像檔發布,到已註冊目標上的 Git 組態與 Argo CD 套用,以及公開 HTTPS 驗證的產品架構。必須同時有已套用的修訂版本 與公開檢查才記為成功;無從得知的結果維持 unknown。

從網頁畫面,或從透過 MCP 連接的自有 AI 代理提交專案,即一路完成部署檔案準備、失敗修復、映像檔發布、環境套用與公開 URL 驗證;部署後也在同一畫面檢視歷程與日誌,並管理更新、停止、恢復與刪除。團隊專案。

大賽開發期間 September 28, 2026 to October 4, 2026

黑客松期間開發的網頁畫面與 MCP 伺服器。遠端 MCP 以 OAuth 登入後提交;本機資料夾透過本機 MCP 提交。

產品架構圖 · 依公開提交 645e28a 的程式碼路徑繪製
Railshot 產品架構Railshot 產品的元件與連線。網頁畫面、遠端 OAuth MCP 與使用者電腦上的本機 MCP 透過同一個產品 API 請求部署,API 受理原始碼提交與 CI 執行。CI 以固定檢查判定,並將檢查過的映像檔發布到 GHCR。CD 轉接器只在已註冊目標與發布記錄一致時,透過 config Git 與 Argo CD 套用,再檢查已註冊的公開 HTTPS 位址並記錄結果。指標屬於觀測,與判定分開。瀏覽器使用者資料夾 · ZIP · GitHub URLMCP 用戶端ChatGPT · Codex · Clauderailshot-local MCP使用者電腦 · stdioGHCR依摘要值指定的映像檔AI SDK providerCodex · Claude SDKConfig Git 儲存庫已註冊的 workload.json公開 HTTPS URL已註冊的 health 路徑Prometheus維運控制 VM · 讀取apps/dashboard網頁畫面 · 歷程 · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/api驗證 · 目標 · 202 受理部署佇列 · 一次 3 個CI 執行繫結 · 觀測cd.js · deployPublishedmetrics observerapi/product-store.jsoperation 狀態 · run 繫結gitops/bridge.py受信任的 config · 已註冊目標commit · push · 遠端回讀Argo sync · 觀測公開 HTTPS 探針Argo CDApplication · AppProject 檢查apps/<tenant>/<app>原始碼提交 · trailerrailshot-deploy.yml迴圈 · 基本檢查 L0–L3SDK 修復 · 僅限可修復的失敗相同檢查 → 檢查過的 bundlerelease · GHCR 發布 · 繫結K3s 應用程式叢集workload · ServiceRailshot 平台維運叢集 · AWSGitHub私有 apps 儲存庫 · Actions已註冊目標各供應商的公開路徑1 資料夾 · ZIP · GitHub URL · 瀏覽器使用者 → 網頁畫面 · 歷程 · Insights12同一個產品 API · /api/v13 OAuth · deploy_repository · MCP 用戶端 → OAuth MCP · deploy_repository34同一個產品 API5 ZIP 上傳 · deploy_local_project · railshot-local MCP → 驗證 · 目標 · 202 受理56 記錄為 queued · 202 · 驗證 · 目標 · 202 受理 → operation 狀態 · run 繫結67佇列順序8部署狀態 · 歷程1source commit2workflow_dispatch3送出的提交4修復請求 · 有條件5發布檢查過的映像檔6執行 · 發布記錄讀取7 failed · publication_unverified · CI 執行繫結 · 觀測 → operation 狀態 · run 繫結71images.json · spec · verdict · manifest2套用 · 已註冊目標3workload commit · push4revision5sync · 觀測6套用7映像檔 pull · 摘要值8HTTPS health9 公開路徑 · 公開 HTTPS URL → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → operation 狀態 · run 繫結1011 unknown · 需重新協調 · cd.js · deployPublished → operation 狀態 · run 繫結111PromQL 查詢2scrape · probe3部署狀態 · 歷程4HTTPS health

提交 → 受理

網頁畫面、遠端 MCP 與本機 MCP 呼叫同一個產品 API,API 將檢查過的請求記錄為 queued 並回應 202。

  1. 瀏覽器使用者資料: 資料夾 · ZIP · GitHub URL網頁畫面 · 歷程 · Insightsapps/dashboard

    在網頁畫面選擇原始碼與已註冊的環境。

  2. 網頁畫面 · 歷程 · Insightsapps/dashboard資料: 同一個產品 API · /api/v1驗證 · 目標 · 202 受理apps/api

    網頁畫面從同一來源呼叫產品 API。

  3. MCP 用戶端資料: OAuth · deploy_repositoryOAuth MCP · deploy_repositoryagent/remote-mcp.js

    遠端 MCP 透過 OAuth 連線,以公開 GitHub 儲存庫作為輸入。

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.js資料: 同一個產品 API驗證 · 目標 · 202 受理apps/api

    遠端 MCP 伺服器透過內部 API 用戶端呼叫同一個部署 API。

  5. railshot-local MCP資料: ZIP 上傳 · deploy_local_project驗證 · 目標 · 202 受理apps/api

    使用者電腦上的 stdio MCP 將資料夾壓縮為 ZIP 後上傳。其工作階段不與遠端 OAuth 工作階段共用。

  6. 驗證 · 目標 · 202 受理apps/api資料: 記錄為 queued · 202operation 狀態 · run 繫結api/product-store.js

    檢查輸入、已註冊目標、容量與冪等鍵後,將 operation 記錄為 queued 並回應 202。202 代表已受理,不代表已部署。

  7. operation 狀態 · run 繫結api/product-store.js資料: 佇列順序部署佇列 · 一次 3 個apps/api

    在並行部署上限(預設 3)內,依受理順序取出。

  8. operation 狀態 · run 繫結api/product-store.js觀測: 部署狀態 · 歷程網頁畫面 · 歷程 · Insightsapps/dashboard

    網頁畫面與 MCP 工具讀取相同的 operation 記錄。最近一次嘗試與目前已驗證的部署分開顯示;AI 任務完成不等於部署成功。

CI 檢查 → 映像檔發布

固定的平台程式碼檢查送出的提交,只把可修復的失敗交給 AI,並只發布再次通過相同檢查的映像檔。

  1. 部署佇列 · 一次 3 個apps/api資料: source commit原始碼提交 · trailerapps/<tenant>/<app>

    提交的原始碼在私有 apps 儲存庫中成為一筆提交(附 Railshot-Request 與 Railshot-Target trailer),分支以不使用 force 的方式更新。

  2. 部署佇列 · 一次 3 個apps/api執行 · 套用: workflow_dispatch迴圈 · 基本檢查 L0–L3railshot-deploy.yml

    以 tenant、app、source_commit 與 target_id 請求一次執行。回應遺失時不重新送出,而是搜尋同一提交的執行。

  3. 原始碼提交 · trailerapps/<tenant>/<app>資料: 送出的提交迴圈 · 基本檢查 L0–L3railshot-deploy.yml

    只 checkout 送出的提交與固定的平台程式碼(PLATFORM_REF)。

  4. SDK 修復 · 僅限可修復的失敗railshot-deploy.yml資料: 修復請求 · 有條件AI SDK provider

    只在可修復的失敗類別時呼叫;同一失敗重複出現或達到嘗試上限即停止。通過或失敗由檢查決定,而非 LLM。

  5. release · GHCR 發布 · 繫結railshot-deploy.yml資料: 發布檢查過的映像檔GHCR

    驗證通過檢查的 bundle 後,將相同的映像檔發布到 GHCR。不重新建置。

  6. CI 執行繫結 · 觀測apps/api觀測: 執行 · 發布記錄讀取railshot-deploy.yml

    只有 run id、source commit、target 與 app 都與受理記錄一致時,才算作發布。

  7. CI 執行繫結 · 觀測apps/api失敗 · 未知結果: failed · publication_unverifiedoperation 狀態 · run 繫結api/product-store.js

    CI 失敗或未經驗證的發布,連同診斷一起記錄,不交給 CD。

套用 → 公開檢查

只有發布記錄與已註冊目標一致時,才透過 config Git 與 Argo CD 套用;已註冊的公開 HTTPS 位址檢查通過後,才記錄成功。

  1. release · GHCR 發布 · 繫結railshot-deploy.yml資料: images.json · spec · verdict · manifestcd.js · deployPublishedapps/api

    CD 透過受信任的 loader 讀取發布記錄的檔案。CI 本身不建立叢集資源、URL,也不產生部署成功。

  2. cd.js · deployPublishedapps/api執行 · 套用: 套用 · 已註冊目標受信任的 config · 已註冊目標gitops/bridge.py

    只有已註冊的應用程式與 tenant 與發布記錄一致時,才以受信任的 config 執行 gitops/bridge.py。

  3. commit · push · 遠端回讀gitops/bridge.py資料: workload commit · pushConfig Git 儲存庫

    只在專用分支的已註冊路徑提交 workload.json,先記錄 push 意圖,再 push 並讀回遠端修訂版本。不確定的 push 不重複執行。

  4. Config Git 儲存庫資料: revisionApplication · AppProject 檢查Argo CD

    Argo CD Application 所指向的 config 儲存庫修訂版本。

  5. Argo sync · 觀測gitops/bridge.py執行 · 套用: sync · 觀測Application · AppProject 檢查Argo CD

    檢查 AppProject 後請求 sync;觀測時只讀取,不進行 sync。

  6. Application · AppProject 檢查Argo CD執行 · 套用: 套用workload · ServiceK3s 應用程式叢集

    將 workload 套用到已註冊的目標叢集。

  7. workload · ServiceK3s 應用程式叢集資料: 映像檔 pull · 摘要值GHCR

    拉取已發布摘要值的映像檔。私有 GHCR 需要專用的 pull 認證資訊。

  8. 公開 HTTPS 探針gitops/bridge.py觀測: HTTPS health公開 HTTPS URL

    只檢查維運人員註冊的 HTTPS health 位址,不跟隨重新導向,確認是否為 200(若有設定,也檢查預期的 JSON)。

  9. 公開 HTTPS URL資料: 公開路徑workload · ServiceK3s 應用程式叢集

    公開路徑(LB、NodePort、憑證)依供應商與已註冊目標而不同。

  10. cd.js · deployPublishedapps/api資料: succeeded · revision · URLoperation 狀態 · run 繫結api/product-store.js

    只有同時具備 cd.deployed、修訂版本、成功的公開 HTTPS 檢查及其時間與有效 URL,才記錄為 succeeded。

  11. cd.js · deployPublishedapps/api失敗 · 未知結果: unknown · 需重新協調operation 狀態 · run 繫結api/product-store.js

    無從得知的結果維持 unknown;同一套用既不重送,也不回復。

觀測 · 非判定

指標與探針不決定部署成功。缺失、過時與失敗的值照實顯示。

  1. metrics observerapps/api觀測: PromQL 查詢Prometheus

    讀取 up、probe_success 與 Pod 序列。缺失、過時或失敗的值以該狀態顯示,絕不轉為 0。

  2. Prometheus觀測: scrape · probeworkload · ServiceK3s 應用程式叢集

    exporter scrape 與 HTTP 探針。這些指標不用於判定部署成功。

  3. operation 狀態 · run 繫結api/product-store.js觀測: 部署狀態 · 歷程網頁畫面 · 歷程 · Insightsapps/dashboard

    網頁畫面與 MCP 工具讀取相同的 operation 記錄。最近一次嘗試與目前已驗證的部署分開顯示;AI 任務完成不等於部署成功。

  4. 公開 HTTPS 探針gitops/bridge.py觀測: HTTPS health公開 HTTPS URL

    只檢查維運人員註冊的 HTTPS health 位址,不跟隨重新導向,確認是否為 200(若有設定,也檢查預期的 JSON)。

所有連線以相同粗細顯示。選擇一個流程,即只突顯其路徑,並標出步驟編號。

  • 實線 · 原始碼、映像檔與請求的流向
  • 虛線 · 執行請求、套用或 sync
  • 長點劃線 · 狀態讀取、探針與指標,與判定分開
  • 短虛線 · 已記錄的失敗或未知結果
  • 粗黑線 · 所選流程;數字表示順序
  • 方框 · 擁有邊界,標題列為原始碼路徑
  • 內層小框 · 該邊界內的元件
  • 虛線框 · 平台之外
  • 橘色外框 · 模型做出判斷之處
  • 產品 API
  • 部署記錄
  • CD 執行邊界
  • 入口 · CI · 目標

docs/architecture/README.md 中 10月2日(bc61a5a)的圖是實作歷史;此架構圖依循 645e28a 的程式碼。供應商與網路路徑依已註冊目標而不同,並不代表每個供應商都一直啟用。