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.
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
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.
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.
Pengguna browserdata: folder · ZIP · URL GitHublayar web · riwayat · Insights
apps/dashboardSumber dan lingkungan terdaftar dipilih di layar web.
layar web · riwayat · Insights
apps/dashboarddata: API produk yang sama · /api/v1validasi · target · terima 202apps/apiLayar web memanggil API produk dari origin yang sama.
Klien MCPdata: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsMCP jarak jauh terhubung lewat OAuth dan menerima repositori GitHub publik sebagai input.
OAuth MCP · deploy_repository
agent/remote-mcp.jsdata: API produk yang samavalidasi · target · terima 202apps/apiServer MCP jarak jauh memanggil API deployment yang sama melalui klien API internalnya.
railshot-local MCPdata: unggah ZIP · deploy_local_projectvalidasi · target · terima 202
apps/apiMCP stdio di komputer pengguna mengemas folder menjadi ZIP dan mengunggahnya. Sesinya tidak dibagi dengan sesi OAuth jarak jauh.
validasi · target · terima 202
apps/apidata: dicatat queued · 202status operation · pengikatan runapi/product-store.jsInput, target terdaftar, kapasitas, dan kunci idempotensi diperiksa; operation dicatat sebagai queued dan dijawab dengan 202. 202 berarti diterima, bukan ter-deploy.
status operation · pengikatan run
api/product-store.jsdata: urutan antreanantrean deploy · 3 sekaligusapps/apiDiambil sesuai urutan penerimaan, dalam batas deployment bersamaan (bawaan 3).
status operation · pengikatan run
api/product-store.jsobservasi: status deployment · riwayatlayar web · riwayat · Insightsapps/dashboardLayar 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.
antrean deploy · 3 sekaligus
apps/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.
antrean deploy · 3 sekaligus
apps/apieksekusi · terapkan: workflow_dispatchloop · pemeriksaan dasar L0–L3railshot-deploy.ymlMeminta eksekusi dengan tenant, app, source_commit, dan target_id. Bila respons hilang, permintaan tidak dikirim lagi; eksekusi untuk commit yang sama dicari sebagai gantinya.
commit sumber · trailer
apps/<tenant>/<app>data: commit yang diajukanloop · pemeriksaan dasar L0–L3railshot-deploy.ymlHanya commit yang diajukan dan kode platform yang dikunci (PLATFORM_REF) yang di-checkout.
perbaikan SDK · hanya kegagalan yang dapat diperbaiki
railshot-deploy.ymldata: permintaan perbaikan · bersyaratAI SDK providerHanya 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.
rilis · publikasi GHCR · pengikatan
railshot-deploy.ymldata: publikasikan image yang diperiksaGHCRSetelah bundle yang lolos pemeriksaan diverifikasi, image yang sama dipublikasikan ke GHCR. Tidak ada yang di-build ulang.
pengikatan eksekusi CI · amati
apps/apiobservasi: eksekusi · baca publikasirailshot-deploy.ymlPublikasi hanya dihitung bila run id, source commit, target, dan app cocok dengan catatan yang diterima.
pengikatan eksekusi CI · amati
apps/apikegagalan · hasil tidak diketahui: failed · publication_unverifiedstatus operation · pengikatan runapi/product-store.jsKegagalan 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.
rilis · publikasi GHCR · pengikatan
railshot-deploy.ymldata: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiCD membaca berkas catatan publikasi melalui loader tepercaya. CI sendiri tidak membuat sumber daya klaster, URL, atau keberhasilan deployment.
cd.js · deployPublished
apps/apieksekusi · terapkan: apply · target terdaftarconfig tepercaya · target terdaftargitops/bridge.pyMenjalankan gitops/bridge.py dengan config tepercaya hanya bila app dan tenant terdaftar cocok dengan catatan publikasi.
commit · push · pembacaan ulang remote
gitops/bridge.pydata: workload commit · pushRepo config GitHanya 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.
Repo config Gitdata: revisionApplication · pemeriksaan AppProject
Argo CDRevisi repositori config yang ditunjuk Argo CD Application.
Argo sync · amati
gitops/bridge.pyeksekusi · terapkan: sync · amatiApplication · pemeriksaan AppProjectArgo CDMeminta sync setelah memeriksa AppProject; pengamatan hanya membaca, tanpa sync.
Application · pemeriksaan AppProject
Argo CDeksekusi · terapkan: terapkanworkload · ServiceKlaster aplikasi K3sMenerapkan workload ke klaster target terdaftar.
workload · Service
Klaster aplikasi K3sdata: tarik image · digestGHCRMenarik digest yang dipublikasikan. GHCR privat memerlukan kredensial pull khusus.
probe HTTPS publik
gitops/bridge.pyobservasi: HTTPS healthURL HTTPS publikHanya memeriksa alamat health HTTPS yang didaftarkan operator, tanpa redirect, untuk 200 (dan JSON yang diharapkan bila ditetapkan).
URL HTTPS publikdata: jalur publikworkload · Service
Klaster aplikasi K3sJalur publik (LB, NodePort, sertifikat) berbeda per penyedia dan target terdaftar.
cd.js · deployPublished
apps/apidata: succeeded · revision · URLstatus operation · pengikatan runapi/product-store.jsDicatat sebagai succeeded hanya dengan cd.deployed, revisi, pemeriksaan HTTPS publik yang berhasil, waktunya, dan URL yang valid.
cd.js · deployPublished
apps/apikegagalan · hasil tidak diketahui: unknown · perlu rekonsiliasistatus operation · pengikatan runapi/product-store.jsHasil 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.
metrics observer
apps/apiobservasi: Kueri PromQLPrometheusMembaca seri up, probe_success, dan Pod. Nilai yang hilang, basi, atau gagal ditampilkan dalam keadaan itu dan tidak pernah diubah menjadi 0.
Prometheusobservasi: scrape · probeworkload · Service
Klaster aplikasi K3sScrape exporter dan probe HTTP. Metrik ini tidak dipakai untuk memutuskan keberhasilan deployment.
status operation · pengikatan run
api/product-store.jsobservasi: status deployment · riwayatlayar web · riwayat · Insightsapps/dashboardLayar 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.
probe HTTPS publik
gitops/bridge.pyobservasi: HTTPS healthURL HTTPS publikHanya 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.