Bastion Deploy · in 1.1.0

Push from your machine to your server.

A deploy panel is in 1.1.0. Approval applies to proposed steps. Git-push rollback restores a previous revision, not a whole server.

Bastion Terminal · deploy · Contabo Server
Bastion Terminal
Local-first SSH workspace
~/projects/api→Contabo Server·/var/www/api
2 aheadmain clean
Recent commits
  1. 3a9f1c2ahead
    fix(login): rate-limit /api/v1/login by IP
    you · just now
  2. 8b1d227ahead
    chore: bump deps (express, helmet)
    you · 12 min ago
  3. 8c0d44adeployed
    feat(api): add /healthz endpoint
    alice · 1 hour ago
  4. e0f1a55deployed
    docs: update README with curl examples
    alice · 2 hours ago
  5. 5d2c910deployed
    feat(api): initial /api/v1/login handler
    bob · yesterday
local HEAD
main @ 3a9f1c2
just now
remote HEAD
main @ 8c0d44a
12 min ago
Plan · deploy Contabo Server
step-by-step
  1. git push bastion main2.1s
  2. post-receive → deploy.sh4.8s
  3. systemctl reload php8.3-fpmawaiting
  4. curl -fsS http://localhost/healthzqueued
.env excluded · 0 secrets · tag: production → step-by-step default
Last deploy · 8c0d44a · 12 min ago · 4.2s · successaudit log →
Surface

One experience, six actions.

Deploy lives in the main Bastion shell (sidebar or host-scoped tab), not inside the AI chat only.

Link Project

Local folder ↔ host ↔ remote path. One click.

Status

See local commit vs server deployed revision.

Diff

Preview exactly what would go live before you approve.

Sync

rsync, git push, or SFTP, with a policy set per profile.

Deploy

Build + restart + health check, executed through a Plan Card.

History

A deploy log is part of the design. Rollback is not guaranteed.

Plan Card

Every deploy is a Plan Card.

Sync, build, restart, and hook installs go through the same approval contract as Bastion AI executes. Step-by-step mode is the default for elevated risk.

  • Production targets require stronger gates.
  • .env, keys, and credentials are excluded from sync by default.
  • Reapply, rollback, and history are first-class.
bastion deploy · api → Contabo Server
local:   main @ 3a9f1c2  (just now)
remote:  main @ 8c0d44a  (12 min ago)
diff:    2 commits, 1 file changed

Plan (deploy):
  1. rsync --exclude .env → /var/www/api
  2. systemctl reload php8.3-fpm
  3. curl -fsS http://localhost/healthz
  [Approve]   [Edit]   [Reject]
        
Waves

Four ordered waves from MVP to AI polish.

D1 can ship with rsync via local shell before v1.1 SFTP. SFTP improves browse and partial sync UX but is not strictly required for the rsync-based MVP.

Bastion Deploy · waves
D0 → D3 · in-design
D0Status & link
planned
D0 · status
~/projects/api → Contabo Server
2 aheadmain clean1 file changed
D1Sync MVP
planned
D1 · rsync deploy
$ rsync -az --exclude .env \
    ~/projects/api/ \
    root@workshop-01:/var/www/api/
sending incremental file list
api/routes/login.js
api/middleware/ratelimit.js

sent 4,812 bytes  received 84 bytes  2,448.00 bytes/sec
1 row added to audit log
D2Git-native
planned
D2 · git push deploy
$ git push bastion main
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 312 bytes | 312.00 KiB/s
remote: post-receive: deploying 3a9f1c2…
remote: post-receive: build ok
remote: post-receive: reloading php-fpm
Bare repo on server · post-receive hook · rollback by reverting server HEAD
D3Polish & AI
planned
D3 · AI deploy
Deploy API to Contabo Server with the new login rate limitready
  1. git push bastion main
  2. post-receive: deploy.sh
  3. curl /healthz · 200 OK
Workspace binding: Production · restores project + tabs + history
D0 Profiles & status
Planned

Link a local project to a host; show local vs server revision.

D1 Sync MVP
Planned

rsync/scp deploy path. Deploy audit. Basic Plan Card pipeline.

D2 Git-native
Planned

Bare repo on the server, push + post-receive hook, rollback.

D3 Polish + AI
Planned

Deploy mode in AI, health checks, workspace binding.

Lifecycle

Push, watch, rollback.

Every deploy leaves a trail. Every plan is reproducible. Every rollback is one click.

Push

Local Git commits sync to the server's bare repo via post-receive hook. No GitHub required.

Watch

The deploy log streams live status from the host. Health checks gate the next step.

Rollback

One click rewinds the server's HEAD to the previous known-good revision. Reapply later, on demand.

Ship the first deploy with us.

Questions about deploy are sent to hello@bastionterminal.com. This site does not store the message.

Contact