RAILSHOT.
Trở lại phòng trưng bày

Railshot

AI deployment & operations platform

Triển khai một ứng dụng web xây dựng cục bộ lên các môi trường đám mây và on-premises đã chuẩn bị, rồi vận hành nó.

Một nền tảng AI triển khai và vận hành, đưa ứng dụng web xây dựng cục bộ lên các môi trường đám mây hoặc on-premises đã chuẩn bị và tiếp tục vận hành nó.

2026.09.28 — 2026.10.04 · Đã kết thúc

Dự án nhóm · phần việc của tôi: lên kế hoạch và hiện thực CI, cụm CSP và giao diện Ansible, vận hành, rà soát mã và tích hợp của nhóm

SoftBank Hackathon 2026 powered by KOREC & ProgateTham gia vòng sơ loại · kết quả chọn vào chung kết công bố 2026.10.26 (tính đến 2026.10.07)

  • WebĐã hiện thực · hackathon
  • Máy chủ MCPĐã hiện thực · remote · cục bộ

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

Màn hình web và tác nhân của chính bạn yêu cầu triển khai qua cùng một API sản phẩm.

Sản phẩm từ một yêu cầu triển khai đã được tiếp nhận, qua kiểm tra CI và phát hành image, đến cấu hình Git và đưa lên bằng Argo CD trên một đích đã đăng ký và kiểm chứng HTTPS công khai. Thành công chỉ được ghi khi có cả revision đã áp dụng và một lần kiểm tra công khai; kết quả không thể biết được giữ là unknown.

Gửi dự án từ màn hình web, hoặc từ tác nhân AI của chính bạn kết nối qua MCP, và nền tảng sẽ đi suốt từ chuẩn bị tệp triển khai, sửa lỗi, phát hành image, đưa lên môi trường đến kiểm chứng URL công khai; sau khi triển khai, cùng màn hình đó hiển thị lịch sử và log, quản lý cập nhật, dừng, tiếp tục và xóa. Một dự án nhóm.

Thời gian phát triển của sự kiện September 28, 2026 đến October 4, 2026

Màn hình web và máy chủ MCP được xây dựng trong hackathon. MCP remote đăng nhập bằng OAuth để gửi; thư mục cục bộ được gửi qua MCP cục bộ.

Kiến trúc sản phẩm · vẽ từ các đường đi mã tại commit công khai 645e28a
Kiến trúc sản phẩm RailshotCác thành phần và kết nối của sản phẩm Railshot. Màn hình web, MCP remote dùng OAuth và MCP cục bộ trên máy người dùng yêu cầu triển khai qua cùng một API sản phẩm, API này đăng ký commit nguồn và lượt chạy CI. CI quyết định bằng các kiểm tra cố định và phát hành image đã kiểm tra lên GHCR. Adapter CD chỉ áp dụng qua config Git và Argo CD khi đích đã đăng ký khớp với bản ghi phát hành, rồi kiểm tra địa chỉ HTTPS công khai đã đăng ký và ghi lại kết quả. Chỉ số là quan sát, tách khỏi phán định.Người dùng trình duyệtthư mục · ZIP · URL GitHubClient MCPChatGPT · Codex · Clauderailshot-local MCPmáy của người dùng · stdioGHCRimage theo digestAI SDK providerCodex · Claude SDKKho config Gitworkload.json đã đăng kýURL HTTPS công khaiđường health đã đăng kýPrometheusVM điều khiển vận hành · đọcapps/dashboardmàn hình web · lịch sử · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/apixác thực · đích · tiếp nhận 202hàng đợi triển khai · 3 cùng lúcgắn lượt chạy CI · quan sátcd.js · deployPublishedmetrics observerapi/product-store.jstrạng thái operation · gắn rungitops/bridge.pyconfig tin cậy · đích đã đăng kýcommit · push · đọc lại remoteArgo sync · quan sátprobe HTTPS công khaiArgo CDApplication · kiểm tra AppProjectapps/<tenant>/<app>commit nguồn · trailerrailshot-deploy.ymlvòng lặp · kiểm tra cơ bản L0–L3sửa bằng SDK · chỉ lỗi sửa đượccùng kiểm tra → bundle đã kiểm thửrelease · phát hành GHCR · gắn kếtCụm ứng dụng K3sworkload · ServiceNền tảng Railshotcụm vận hành · AWSGitHubkho apps riêng tư · ActionsĐích đã đăng kýđường công khai theo nhà cung cấp1 thư mục · ZIP · URL GitHub · Người dùng trình duyệt → màn hình web · lịch sử · Insights12cùng API sản phẩm · /api/v13 OAuth · deploy_repository · Client MCP → OAuth MCP · deploy_repository34cùng API sản phẩm5 tải lên ZIP · deploy_local_project · railshot-local MCP → xác thực · đích · tiếp nhận 20256 ghi là queued · 202 · xác thực · đích · tiếp nhận 202 → trạng thái operation · gắn run67 thứ tự hàng đợi · trạng thái operation · gắn run → hàng đợi triển khai · 3 cùng lúc78trạng thái triển khai · lịch sử1source commit2workflow_dispatch3commit đã gửi4yêu cầu sửa · có điều kiện5phát hành image đã kiểm tra6lượt chạy · đọc bản phát hành7 failed · publication_unverified · gắn lượt chạy CI · quan sát → trạng thái operation · gắn run71images.json · spec · verdict · manifest2apply · đích đã đăng ký3workload commit · push4revision5sync · quan sát6áp dụng7kéo image · digest8HTTPS health9 đường công khai · URL HTTPS công khai → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → trạng thái operation · gắn run1011 unknown · cần đối soát · cd.js · deployPublished → trạng thái operation · gắn run111Truy vấn PromQL2scrape · probe3trạng thái triển khai · lịch sử4HTTPS health

Gửi → tiếp nhận

Màn hình web, MCP remote và MCP cục bộ gọi cùng một API sản phẩm, API này ghi yêu cầu đã kiểm tra là queued và trả lời 202.

  1. Người dùng trình duyệtdữ liệu: thư mục · ZIP · URL GitHubmàn hình web · lịch sử · Insightsapps/dashboard

    Nguồn và một môi trường đã đăng ký được chọn trên màn hình web.

  2. màn hình web · lịch sử · Insightsapps/dashboarddữ liệu: cùng API sản phẩm · /api/v1xác thực · đích · tiếp nhận 202apps/api

    Màn hình web gọi API sản phẩm từ cùng origin.

  3. Client MCPdữ liệu: OAuth · deploy_repositoryOAuth MCP · deploy_repositoryagent/remote-mcp.js

    MCP remote kết nối qua OAuth và nhận một kho GitHub công khai làm đầu vào.

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.jsdữ liệu: cùng API sản phẩmxác thực · đích · tiếp nhận 202apps/api

    Máy chủ MCP remote gọi cùng API triển khai qua client API nội bộ của nó.

  5. railshot-local MCPdữ liệu: tải lên ZIP · deploy_local_projectxác thực · đích · tiếp nhận 202apps/api

    MCP stdio trên máy người dùng nén một thư mục thành ZIP và tải lên. Phiên của nó không dùng chung với phiên OAuth remote.

  6. xác thực · đích · tiếp nhận 202apps/apidữ liệu: ghi là queued · 202trạng thái operation · gắn runapi/product-store.js

    Đầu vào, đích đã đăng ký, dung lượng và khóa idempotency được kiểm tra; operation được ghi là queued và trả lời bằng 202. 202 nghĩa là đã tiếp nhận, không phải đã triển khai.

  7. trạng thái operation · gắn runapi/product-store.jsdữ liệu: thứ tự hàng đợihàng đợi triển khai · 3 cùng lúcapps/api

    Được lấy theo thứ tự tiếp nhận, trong giới hạn số lần triển khai đồng thời (mặc định 3).

  8. trạng thái operation · gắn runapi/product-store.jsquan sát: trạng thái triển khai · lịch sửmàn hình web · lịch sử · Insightsapps/dashboard

    Màn hình web và các công cụ MCP đọc cùng các bản ghi operation. Lần thử gần nhất và lần triển khai đã kiểm chứng hiện tại được hiển thị riêng, và một tác vụ AI đã xong không phải là triển khai thành công.

Kiểm tra CI → phát hành image

Mã nền tảng cố định kiểm tra commit đã gửi, chỉ giao lỗi sửa được cho AI, và chỉ phát hành image đã qua lại cùng các kiểm tra.

  1. hàng đợi triển khai · 3 cùng lúcapps/apidữ liệu: source commitcommit nguồn · trailerapps/<tenant>/<app>

    Nguồn được gửi trở thành một commit trong kho apps riêng tư (kèm trailer Railshot-Request và Railshot-Target), và nhánh được cập nhật mà không dùng force.

  2. hàng đợi triển khai · 3 cùng lúcapps/apichạy · áp dụng: workflow_dispatchvòng lặp · kiểm tra cơ bản L0–L3railshot-deploy.yml

    Yêu cầu một lượt chạy với tenant, app, source_commit và target_id. Nếu phản hồi bị mất, yêu cầu không được gửi lại; thay vào đó các lượt chạy của cùng commit được tìm kiếm.

  3. commit nguồn · trailerapps/<tenant>/<app>dữ liệu: commit đã gửivòng lặp · kiểm tra cơ bản L0–L3railshot-deploy.yml

    Chỉ commit đã gửi và mã nền tảng cố định (PLATFORM_REF) được checkout.

  4. sửa bằng SDK · chỉ lỗi sửa đượcrailshot-deploy.ymldữ liệu: yêu cầu sửa · có điều kiệnAI SDK provider

    Chỉ được gọi với các loại lỗi sửa được, và dừng khi cùng một lỗi lặp lại hoặc đạt giới hạn số lần thử. Đạt hay không do các bước kiểm tra quyết định, không phải LLM.

  5. release · phát hành GHCR · gắn kếtrailshot-deploy.ymldữ liệu: phát hành image đã kiểm traGHCR

    Sau khi xác minh bundle đã qua kiểm tra, cùng các image đó được phát hành lên GHCR. Không có gì được build lại.

  6. gắn lượt chạy CI · quan sátapps/apiquan sát: lượt chạy · đọc bản phát hànhrailshot-deploy.yml

    Một bản phát hành chỉ được tính khi run id, source commit, target và app khớp với bản ghi đã tiếp nhận.

  7. gắn lượt chạy CI · quan sátapps/apilỗi · kết quả không xác định: failed · publication_unverifiedtrạng thái operation · gắn runapi/product-store.js

    Lỗi CI hoặc bản phát hành chưa được xác minh được ghi lại cùng chẩn đoán và không chuyển sang CD.

Áp dụng → kiểm tra công khai

Chỉ áp dụng qua config Git và Argo CD khi bản phát hành khớp với đích đã đăng ký, và chỉ ghi thành công sau khi địa chỉ HTTPS công khai đã đăng ký vượt qua kiểm tra.

  1. release · phát hành GHCR · gắn kếtrailshot-deploy.ymldữ liệu: images.json · spec · verdict · manifestcd.js · deployPublishedapps/api

    CD đọc các tệp của bản ghi phát hành qua một loader tin cậy. Bản thân CI không tạo tài nguyên cụm, URL hay thành công triển khai nào.

  2. cd.js · deployPublishedapps/apichạy · áp dụng: apply · đích đã đăng kýconfig tin cậy · đích đã đăng kýgitops/bridge.py

    Chạy gitops/bridge.py với config tin cậy chỉ khi app và tenant đã đăng ký khớp với bản ghi phát hành.

  3. commit · push · đọc lại remotegitops/bridge.pydữ liệu: workload commit · pushKho config Git

    Chỉ commit workload.json tại đường dẫn đã đăng ký của một nhánh riêng, ghi ý định push trước, push, rồi đọc lại revision ở remote. Một lần push không chắc chắn sẽ không được lặp lại.

  4. Kho config Gitdữ liệu: revisionApplication · kiểm tra AppProjectArgo CD

    Revision của kho config mà Argo CD Application trỏ tới.

  5. Argo sync · quan sátgitops/bridge.pychạy · áp dụng: sync · quan sátApplication · kiểm tra AppProjectArgo CD

    Yêu cầu sync sau khi kiểm tra AppProject; quan sát chỉ đọc, không sync.

  6. Application · kiểm tra AppProjectArgo CDchạy · áp dụng: áp dụngworkload · ServiceCụm ứng dụng K3s

    Áp dụng workload lên cụm đích đã đăng ký.

  7. workload · ServiceCụm ứng dụng K3sdữ liệu: kéo image · digestGHCR

    Kéo digest đã phát hành. GHCR riêng tư cần một thông tin xác thực pull riêng.

  8. probe HTTPS công khaigitops/bridge.pyquan sát: HTTPS healthURL HTTPS công khai

    Chỉ kiểm tra địa chỉ health HTTPS do người vận hành đăng ký, không theo redirect, để xem có 200 (và JSON mong đợi nếu được đặt).

  9. URL HTTPS công khaidữ liệu: đường công khaiworkload · ServiceCụm ứng dụng K3s

    Đường công khai (LB, NodePort, chứng chỉ) khác nhau theo nhà cung cấp và đích đã đăng ký.

  10. cd.js · deployPublishedapps/apidữ liệu: succeeded · revision · URLtrạng thái operation · gắn runapi/product-store.js

    Chỉ ghi là succeeded khi có cd.deployed, một revision, một lần kiểm tra HTTPS công khai thành công, thời điểm của nó và một URL hợp lệ.

  11. cd.js · deployPublishedapps/apilỗi · kết quả không xác định: unknown · cần đối soáttrạng thái operation · gắn runapi/product-store.js

    Kết quả không thể biết được giữ là unknown; cùng lần apply đó không được gửi lại cũng không được hoàn tác.

Quan sát · không phải phán định

Chỉ số và probe không quyết định việc triển khai thành công. Giá trị thiếu, cũ và thu thập thất bại được hiển thị đúng như vậy.

  1. metrics observerapps/apiquan sát: Truy vấn PromQLPrometheus

    Đọc các chuỗi up, probe_success và Pod. Giá trị thiếu, cũ hoặc thu thập thất bại được hiển thị đúng trạng thái đó và không bao giờ bị biến thành 0.

  2. Prometheusquan sát: scrape · probeworkload · ServiceCụm ứng dụng K3s

    Scrape exporter và HTTP probe. Các chỉ số này không được dùng để quyết định triển khai thành công.

  3. trạng thái operation · gắn runapi/product-store.jsquan sát: trạng thái triển khai · lịch sửmàn hình web · lịch sử · Insightsapps/dashboard

    Màn hình web và các công cụ MCP đọc cùng các bản ghi operation. Lần thử gần nhất và lần triển khai đã kiểm chứng hiện tại được hiển thị riêng, và một tác vụ AI đã xong không phải là triển khai thành công.

  4. probe HTTPS công khaigitops/bridge.pyquan sát: HTTPS healthURL HTTPS công khai

    Chỉ kiểm tra địa chỉ health HTTPS do người vận hành đăng ký, không theo redirect, để xem có 200 (và JSON mong đợi nếu được đặt).

Mọi kết nối có cùng độ đậm. Chọn một luồng để chỉ làm nổi bật đường đi của nó, kèm các bước được đánh số.

  • Nét liền · hướng đi của nguồn, image và yêu cầu
  • Nét đứt · yêu cầu chạy, áp dụng hoặc sync
  • Nét gạch chấm dài · đọc trạng thái, probe và chỉ số, tách khỏi phán định
  • Nét gạch ngắn · lỗi đã ghi hoặc kết quả không xác định
  • Nét đen đậm · luồng được chọn; số chỉ thứ tự
  • Hộp · một ranh giới sở hữu, đường dẫn nguồn ở phần đầu
  • Chip bên trong · một thành phần trong ranh giới đó
  • Hộp nét đứt · bên ngoài nền tảng
  • Viền cam · nơi một mô hình quyết định
  • API sản phẩm
  • Bản ghi triển khai
  • Ranh giới thực thi CD
  • Đầu vào · CI · đích

Hình October 2 (bc61a5a) trong docs/architecture/README.md là lịch sử hiện thực; kiến trúc này theo mã 645e28a. Nhà cung cấp và đường mạng khác nhau theo đích đã đăng ký, và điều này không có nghĩa mọi nhà cung cấp luôn được bật.