RAILSHOT.
Kembali ke ruang pamer

Railshot

AI deployment & operations platform

Men-deploy aplikasi web yang dibangun secara lokal ke lingkungan cloud dan on-premise yang telah disiapkan, lalu menjalankannya.

Platform AI untuk deployment dan operasi yang membawa aplikasi web yang dibangun secara lokal ke lingkungan cloud atau on-premise yang telah disiapkan dan terus menjalankannya.

2026.09.28 — 2026.10.04 · Selesai

Proyek tim · bagian saya: perencanaan dan implementasi CI, klaster CSP dan antarmuka Ansible, operasi, tinjauan kode dan integrasi tim

SoftBank Hackathon 2026 powered by KOREC & ProgatePeserta babak penyisihan · pengumuman seleksi final 2026.10.26 (per 2026.10.07)

  • WebDiimplementasikan · hackathon
  • Server MCPDiimplementasikan · jarak jauh · lokal

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

Layar web dan agen Anda sendiri meminta deployment melalui API produk yang sama.

Produk dari permintaan deployment yang diterima, melalui pemeriksaan CI dan publikasi image, hingga konfigurasi Git dan peluncuran Argo CD pada target terdaftar serta verifikasi HTTPS publik. Keberhasilan hanya dicatat bila ada revisi yang diterapkan sekaligus pemeriksaan publik; hasil yang tidak dapat diketahui tetap unknown.

Ajukan proyek dari layar web, atau dari agen AI Anda sendiri yang terhubung lewat MCP, dan platform ini menjalankan seluruhnya dari persiapan berkas deployment, perbaikan kegagalan, publikasi image, peluncuran ke lingkungan, hingga verifikasi URL publik; setelah deployment, layar yang sama menampilkan riwayat dan log serta mengelola pembaruan, penghentian, pelanjutan, dan penghapusan. Proyek tim.

Masa pengembangan acara September 28, 2026 hingga October 4, 2026

Layar web dan server MCP yang dibangun selama hackathon. MCP jarak jauh masuk dengan OAuth untuk mengajukan; folder lokal diajukan lewat MCP lokal.

Arsitektur produk · digambar dari jalur kode pada commit publik 645e28a
Arsitektur produk RailshotKomponen dan koneksi produk Railshot. Layar web, MCP OAuth jarak jauh, dan MCP lokal di komputer pengguna meminta deployment melalui API produk yang sama, yang mendaftarkan commit sumber dan eksekusi CI. CI memutuskan dengan pemeriksaan tetap dan memublikasikan image yang telah diperiksa ke GHCR. Adapter CD menerapkan lewat config Git dan Argo CD hanya bila target terdaftar cocok dengan catatan publikasi, lalu memeriksa alamat HTTPS publik yang terdaftar dan mencatat hasilnya. Metrik adalah observasi, terpisah dari putusan.Pengguna browserfolder · ZIP · URL GitHubKlien MCPChatGPT · Codex · Clauderailshot-local MCPkomputer pengguna · stdioGHCRimage per digestAI SDK providerCodex · Claude SDKRepo config Gitworkload.json terdaftarURL HTTPS publikjalur health terdaftarPrometheusVM kontrol operasi · bacaapps/dashboardlayar web · riwayat · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/apivalidasi · target · terima 202antrean deploy · 3 sekaliguspengikatan eksekusi CI · amaticd.js · deployPublishedmetrics observerapi/product-store.jsstatus operation · pengikatan rungitops/bridge.pyconfig tepercaya · target terdaftarcommit · push · pembacaan ulang remoteArgo sync · amatiprobe HTTPS publikArgo CDApplication · pemeriksaan AppProjectapps/<tenant>/<app>commit sumber · trailerrailshot-deploy.ymlloop · pemeriksaan dasar L0–L3perbaikan SDK · hanya kegagalan yang dapat diperbaikipemeriksaan sama → bundle terujirilis · publikasi GHCR · pengikatanKlaster aplikasi K3sworkload · ServicePlatform Railshotklaster operasi · AWSGitHubrepo apps privat · ActionsTarget terdaftarjalur publik per penyedia1 folder · ZIP · URL GitHub · Pengguna browser → layar web · riwayat · Insights12API produk yang sama · /api/v13 OAuth · deploy_repository · Klien MCP → OAuth MCP · deploy_repository34API produk yang sama5 unggah ZIP · deploy_local_project · railshot-local MCP → validasi · target · terima 20256 dicatat queued · 202 · validasi · target · terima 202 → status operation · pengikatan run67 urutan antrean · status operation · pengikatan run → antrean deploy · 3 sekaligus78status deployment · riwayat1source commit2workflow_dispatch3commit yang diajukan4permintaan perbaikan · bersyarat5publikasikan image yang diperiksa6eksekusi · baca publikasi7 failed · publication_unverified · pengikatan eksekusi CI · amati → status operation · pengikatan run71images.json · spec · verdict · manifest2apply · target terdaftar3workload commit · push4revision5sync · amati6terapkan7tarik image · digest8HTTPS health9 jalur publik · URL HTTPS publik → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → status operation · pengikatan run1011 unknown · perlu rekonsiliasi · cd.js · deployPublished → status operation · pengikatan run111Kueri PromQL2scrape · probe3status deployment · riwayat4HTTPS health

Ajukan → terima

Layar web, MCP jarak jauh, dan MCP lokal memanggil API produk yang sama, yang mencatat permintaan yang diperiksa sebagai queued dan menjawab 202.

  1. Pengguna browserdata: folder · ZIP · URL GitHublayar web · riwayat · Insightsapps/dashboard

    Sumber dan lingkungan terdaftar dipilih di layar web.

  2. layar web · riwayat · Insightsapps/dashboarddata: API produk yang sama · /api/v1validasi · target · terima 202apps/api

    Layar web memanggil API produk dari origin yang sama.

  3. Klien MCPdata: OAuth · deploy_repositoryOAuth MCP · deploy_repositoryagent/remote-mcp.js

    MCP jarak jauh terhubung lewat OAuth dan menerima repositori GitHub publik sebagai input.

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.jsdata: API produk yang samavalidasi · target · terima 202apps/api

    Server MCP jarak jauh memanggil API deployment yang sama melalui klien API internalnya.

  5. railshot-local MCPdata: unggah ZIP · deploy_local_projectvalidasi · target · terima 202apps/api

    MCP stdio di komputer pengguna mengemas folder menjadi ZIP dan mengunggahnya. Sesinya tidak dibagi dengan sesi OAuth jarak jauh.

  6. validasi · target · terima 202apps/apidata: dicatat queued · 202status operation · pengikatan runapi/product-store.js

    Input, target terdaftar, kapasitas, dan kunci idempotensi diperiksa; operation dicatat sebagai queued dan dijawab dengan 202. 202 berarti diterima, bukan ter-deploy.

  7. status operation · pengikatan runapi/product-store.jsdata: urutan antreanantrean deploy · 3 sekaligusapps/api

    Diambil sesuai urutan penerimaan, dalam batas deployment bersamaan (bawaan 3).

  8. status operation · pengikatan runapi/product-store.jsobservasi: status deployment · riwayatlayar web · riwayat · Insightsapps/dashboard

    Layar web dan alat MCP membaca catatan operation yang sama. Percobaan terbaru dan deployment terverifikasi saat ini ditampilkan terpisah, dan tugas AI yang selesai bukanlah keberhasilan deployment.

Pemeriksaan CI → publikasi image

Kode platform yang dikunci memeriksa commit yang diajukan, hanya menyerahkan kegagalan yang dapat diperbaiki ke AI, dan hanya memublikasikan image yang lolos lagi pemeriksaan yang sama.

  1. antrean deploy · 3 sekaligusapps/apidata: source commitcommit sumber · trailerapps/<tenant>/<app>

    Sumber yang diajukan menjadi commit di repositori apps privat (dengan trailer Railshot-Request dan Railshot-Target), dan branch diperbarui tanpa force.

  2. antrean deploy · 3 sekaligusapps/apieksekusi · terapkan: workflow_dispatchloop · pemeriksaan dasar L0–L3railshot-deploy.yml

    Meminta eksekusi dengan tenant, app, source_commit, dan target_id. Bila respons hilang, permintaan tidak dikirim lagi; eksekusi untuk commit yang sama dicari sebagai gantinya.

  3. commit sumber · trailerapps/<tenant>/<app>data: commit yang diajukanloop · pemeriksaan dasar L0–L3railshot-deploy.yml

    Hanya commit yang diajukan dan kode platform yang dikunci (PLATFORM_REF) yang di-checkout.

  4. perbaikan SDK · hanya kegagalan yang dapat diperbaikirailshot-deploy.ymldata: permintaan perbaikan · bersyaratAI SDK provider

    Hanya dipanggil untuk kelas kegagalan yang dapat diperbaiki, dan dihentikan bila kegagalan yang sama berulang atau batas percobaan tercapai. Lulus atau gagal diputuskan oleh pemeriksaan, bukan oleh LLM.

  5. rilis · publikasi GHCR · pengikatanrailshot-deploy.ymldata: publikasikan image yang diperiksaGHCR

    Setelah bundle yang lolos pemeriksaan diverifikasi, image yang sama dipublikasikan ke GHCR. Tidak ada yang di-build ulang.

  6. pengikatan eksekusi CI · amatiapps/apiobservasi: eksekusi · baca publikasirailshot-deploy.yml

    Publikasi hanya dihitung bila run id, source commit, target, dan app cocok dengan catatan yang diterima.

  7. pengikatan eksekusi CI · amatiapps/apikegagalan · hasil tidak diketahui: failed · publication_unverifiedstatus operation · pengikatan runapi/product-store.js

    Kegagalan CI atau publikasi yang belum terverifikasi dicatat bersama diagnostik dan tidak diteruskan ke CD.

Terapkan → pemeriksaan publik

Menerapkan lewat config Git dan Argo CD hanya bila publikasi cocok dengan target terdaftar, dan mencatat keberhasilan hanya setelah alamat HTTPS publik terdaftar lolos pemeriksaan.

  1. rilis · publikasi GHCR · pengikatanrailshot-deploy.ymldata: images.json · spec · verdict · manifestcd.js · deployPublishedapps/api

    CD membaca berkas catatan publikasi melalui loader tepercaya. CI sendiri tidak membuat sumber daya klaster, URL, atau keberhasilan deployment.

  2. cd.js · deployPublishedapps/apieksekusi · terapkan: apply · target terdaftarconfig tepercaya · target terdaftargitops/bridge.py

    Menjalankan gitops/bridge.py dengan config tepercaya hanya bila app dan tenant terdaftar cocok dengan catatan publikasi.

  3. commit · push · pembacaan ulang remotegitops/bridge.pydata: workload commit · pushRepo config Git

    Hanya meng-commit workload.json di path terdaftar dari branch khusus, mencatat niat push lebih dahulu, melakukan push, lalu membaca kembali revisi remote. Push yang tidak pasti tidak diulang.

  4. Repo config Gitdata: revisionApplication · pemeriksaan AppProjectArgo CD

    Revisi repositori config yang ditunjuk Argo CD Application.

  5. Argo sync · amatigitops/bridge.pyeksekusi · terapkan: sync · amatiApplication · pemeriksaan AppProjectArgo CD

    Meminta sync setelah memeriksa AppProject; pengamatan hanya membaca, tanpa sync.

  6. Application · pemeriksaan AppProjectArgo CDeksekusi · terapkan: terapkanworkload · ServiceKlaster aplikasi K3s

    Menerapkan workload ke klaster target terdaftar.

  7. workload · ServiceKlaster aplikasi K3sdata: tarik image · digestGHCR

    Menarik digest yang dipublikasikan. GHCR privat memerlukan kredensial pull khusus.

  8. probe HTTPS publikgitops/bridge.pyobservasi: HTTPS healthURL HTTPS publik

    Hanya memeriksa alamat health HTTPS yang didaftarkan operator, tanpa redirect, untuk 200 (dan JSON yang diharapkan bila ditetapkan).

  9. URL HTTPS publikdata: jalur publikworkload · ServiceKlaster aplikasi K3s

    Jalur publik (LB, NodePort, sertifikat) berbeda per penyedia dan target terdaftar.

  10. cd.js · deployPublishedapps/apidata: succeeded · revision · URLstatus operation · pengikatan runapi/product-store.js

    Dicatat sebagai succeeded hanya dengan cd.deployed, revisi, pemeriksaan HTTPS publik yang berhasil, waktunya, dan URL yang valid.

  11. cd.js · deployPublishedapps/apikegagalan · hasil tidak diketahui: unknown · perlu rekonsiliasistatus operation · pengikatan runapi/product-store.js

    Hasil yang tidak dapat diketahui tetap unknown; apply yang sama tidak dikirim ulang maupun dibatalkan.

Observasi · bukan putusan

Metrik dan probe tidak memutuskan keberhasilan deployment. Nilai yang hilang, basi, dan gagal ditampilkan apa adanya.

  1. metrics observerapps/apiobservasi: Kueri PromQLPrometheus

    Membaca seri up, probe_success, dan Pod. Nilai yang hilang, basi, atau gagal ditampilkan dalam keadaan itu dan tidak pernah diubah menjadi 0.

  2. Prometheusobservasi: scrape · probeworkload · ServiceKlaster aplikasi K3s

    Scrape exporter dan probe HTTP. Metrik ini tidak dipakai untuk memutuskan keberhasilan deployment.

  3. status operation · pengikatan runapi/product-store.jsobservasi: status deployment · riwayatlayar web · riwayat · Insightsapps/dashboard

    Layar web dan alat MCP membaca catatan operation yang sama. Percobaan terbaru dan deployment terverifikasi saat ini ditampilkan terpisah, dan tugas AI yang selesai bukanlah keberhasilan deployment.

  4. probe HTTPS publikgitops/bridge.pyobservasi: HTTPS healthURL HTTPS publik

    Hanya memeriksa alamat health HTTPS yang didaftarkan operator, tanpa redirect, untuk 200 (dan JSON yang diharapkan bila ditetapkan).

Setiap koneksi dengan bobot yang sama. Pilih alur untuk menyorot hanya jalurnya, dengan langkah bernomor.

  • Garis utuh · arah aliran sumber, image, dan permintaan
  • Garis putus · permintaan eksekusi, terapkan, atau sync
  • Garis titik-strip panjang · pembacaan status, probe, dan metrik, terpisah dari putusan
  • Strip pendek · kegagalan tercatat atau hasil yang tidak diketahui
  • Garis hitam tebal · alur yang dipilih; angka menunjukkan urutan
  • Kotak · batas kepemilikan, path sumbernya di bagian kepala
  • Chip dalam · komponen di dalam batas itu
  • Kotak putus-putus · di luar platform
  • Garis tepi oranye · tempat model memutuskan
  • API produk
  • Catatan deployment
  • Batas eksekusi CD
  • Masuk · CI · target

Gambar October 2 (bc61a5a) di docs/architecture/README.md adalah riwayat implementasi; arsitektur ini mengikuti kode 645e28a. Penyedia dan jalur jaringan berbeda per target terdaftar, dan ini tidak berarti setiap penyedia selalu aktif.