oxid

oxid

Every branch comes alive.

Push → live preview. Idle → scales to zero, RAM back.

$ curl -fsSL https://raw.githubusercontent.com/sazardev/oxid/main/install.sh | sh -s -- --docker
oxid — live session
git push origin feature-login
Building image (cache hit: 85%) ...
https://feature-login.local.dev
oxid pause feature-login
paused — RAM returned
curl feature-login.local.dev
woken in 340ms — serving

// install — 60 seconds

From nothing to a live preview.

No YAML novels, no secret juggling. Secrets generate themselves, the wizard does the rest.

01 — run

docker compose up -d

Checksums verified, secrets generated, daemon + Traefik up.

$ curl -fsSL .../install.sh | sh -s -- --docker
[+] Dashboard: http://localhost:8080  → wizard
02 — wizard

Open the dashboard

Five steps, all also scriptable via CLI:

  1. Token
  2. Infra bootstrap — one click
  3. First project — by Git URL
  4. Webhooks
  5. CLI snippet
03 — push

Push a branch

That's the whole interface from here on.

$ git push origin feature-carrito
[>] Building (cache hit: 85%) ...
[+] https://feature-carrito.local.dev

Traefik mode: stable subdomains + wake-on-request. Direct-publish: a host port each, no DNS. Install guide · Env vars

// why

Staging environments shouldn't cost like production ones.

The problem

Pay a cloud platform for staging instances asleep 90% of the time, or drown your own server in containers nobody remembers to stop.

The Oxid way

Push → deployed → routed. Idle 30 min → paused in memory. Next visit → awake in milliseconds. Vercel-style URLs, calculator-sized bill.

// what it offers

Opinionated, so you don't have to configure it.

Zero friction

There's a Dockerfile? Oxid knows what to do. oxid.toml for more control.

Real scale-to-zero

Idle branches pause in memory. First request wakes them like nothing happened.

Resource multiplexing

One shared Postgres, one shared Redis. Dozens of branches, no cluster sprawl.

Fully local, fully audited

No external database. Every deploy and secret access lands in an embedded SQLite log.

One control plane, many surfaces

CLI, TUI, dashboard, desktop app — same daemon, pick whichever fits the moment.

Written in Rust

One static binary, tiny footprint, unsafe forbidden workspace-wide.

// the golden path

You never feel the machinery.

  1. 01

    Install

    One command. Secrets generate themselves, printed once.

  2. 02

    Wizard

    Token → infra bootstrap → register by Git URL. First deploy kicks off for you.

  3. 03

    Push a branch

    That's the whole interface from then on. Auto-routed at branch.your-domain.

  4. 04

    Breathe

    Idle → paused, RAM back. Next visit → awake in milliseconds.

deploy

The push button, plus an undo.

  • oxid up <branch>
  • oxid rollback [--to <sha>]
  • oxid pause / wake
  • oxid down · rm-project

observe

What's live, what it's doing, what happened.

  • oxid status --sort --filter
  • oxid logs -f — live stream
  • oxid audit --since --kind
  • oxid ps · queue

secrets & policy

Scoped variables, lifetimes, many daemons.

  • oxid env set K=V --scope branch
  • oxid configure --pause-after 30m
  • oxid context add staging --api ...
  • oxid env list / delete

operate

Day-2 care, built in from day one.

  • oxid doctor
  • oxid backup / restore
  • oxid rotate-key · token
  • oxid infra setup

Every command speaks --json with distinct exit codes for CI pipelines, and your shell gets tab completion via oxid completions zsh.

// status

Ready to run. Honest about what's next.

Oxid already runs end to end in production: one-command Docker install, webhooks, secret injection, scale-to-zero, zero-downtime redeploys. CLI and dashboard cover the full lifecycle today. TUI and desktop app are next — the ROADMAP tracks exactly what's real versus what's ahead.

Available

CLI

Full lifecycle from one binary: deploy, rollback, logs -f, scoped secrets, backup/restore, contexts, --json everywhere.

Planned

TUI

Keyboard-driven, branch tree, live logs.

Available

Web dashboard

Embedded in the binary, brutalist by design.

Planned

Desktop app

Tauri tray app for one-click access to preview URLs.

Follow the build. Shape it.

Oxid is fully open source under a no-strings 0BSD license. If the idea resonates, starring the repo helps it reach more people, and issues tagged for contribution are the fastest way in.