SPCBotSPCBot Docs

Features

Learn how features work in SPCBot and how to configure them for your team.

Visual Guide

Drop real screenshots into the paths below. This grid is rendered by src/app/docs/components/image-placeholder.tsx.

Dashboard Overview

Main dashboard with stats and recent deployments

public/docs/images/dashboard-overview.png

Server List

Connected servers and their health status

public/docs/images/servers-list.png

Deployment View

Live deployment logs and progress

public/docs/images/deployment-view.png
Speed: 30-60 seconds vs 3-5 minutes

Update changed files only without full container rebuild

What It Does

  1. Git Pull: Fast update of changed files only
  2. Update Modules: Reload changed Odoo modules
  3. Fast Restart: Restart Odoo without container rebuild

When to Use

  • Small code changes
  • Module updates
  • Configuration changes
  • NOT for database schema changes

API Endpoint

POST /organizations/:slug/projects/:projectId/environments/:id/quick-update

Clone Environment

Duplicate an entire environment including database, filestore, and configuration.

What Gets Cloned

  • Database (full pg_dump / pg_restore)
  • Filestore (Odoo attachments)
  • Configuration (non-secret env vars)
  • Git repository and branch
  • Secrets (must be reconfigured)

Clone Options

OptionDescription
NameNew environment name
ServerTarget server (can be different from source)
BranchOverride git branch (optional)

API Endpoint

POST /organizations/:slug/projects/:projectId/environments/:id/clone
Body: {
  "name": "staging-copy",
  "serverId": "optional-server-id",
  "branch": "optional-branch"
}

Auto Deploy

Automatically deploy when code is pushed to GitHub.

How It Works

  1. Push code to GitHub repository
  2. GitHub sends webhook to SPCBot
  3. SPCBot queues deployment job
  4. DeploymentWorker processes the job
  5. Instance updated automatically

Configuration

  • Enable Auto Deploy toggle per environment
  • Only triggers when environment is RUNNING
  • Set webhook URL in GitHub repository settings
Production Warning

Auto-deploy to production should be used with caution. Consider requiring manual approval for production environments.

Auto Restart

Keep an instance running on its own — SPCBot brings it back automatically instead of waiting for someone to notice it's down.

How It Works

A background check runs every 5 minutes per instance. If it finds the instance down while it should be up, it runs a recovery step on the server and confirms the instance responds again before marking it healthy.

When It Restarts

  • The instance crashed
  • The host server rebooted (instance containers come back with it)
  • The instance was stopped externally (e.g. directly on the server via SSH, outside SPCBot)
A dashboard Stop is always respected

If you stop the instance from the SPCBot dashboard, Auto Restart will not bring it back. It only recovers from unexpected downtime.

Configuration

  • Enabled by default for every instance
  • Toggle it per environment in Settings → Auto Restart
  • Turning it off applies immediately to the running instance; turning it back on does too

Maintenance Page

When an instance's Odoo backend is briefly unreachable — a deploy restart, a crash, a module upgrade in progress — visitors see a branded "Service Unavailable" page instead of a raw server error.

How It Works

Fully passive: your server's reverse proxy shows the page automatically whenever it can't reach Odoo, and switches straight back to your instance the moment Odoo answers again — no setup, no toggle, nothing to configure per environment. Visitors can play a small game while they wait and are redirected automatically the instant your instance is back — mid-game if one's in progress, immediately otherwise.

Not an error for search engines or monitors

The page is served with a "temporary, try again shortly" response, so browsers and crawlers treat the outage as transient rather than a broken page.

Configuration

  • Enabled automatically on every instance — no setup required
  • Existing instances pick it up on their next deploy

Scheduled Backups

Every production instance backs itself up automatically, to one or more places you choose, and keeps only what your retention rules say to keep.

How It Works

  • The schedule, storage destinations, and retention are configured once per organization, under Settings → Backups
  • Coverage is a simple on/off switch per instance: production instances default to on, other environment types default to off — flip either from Settings → Backups or right from that instance's own Backups tab
  • Choose one or more storage targets: the instance's own server, another of your own registered servers, Cloudflare R2, any S3-compatible bucket, or Google Cloud Storage
  • Set your own retention: how many daily, weekly, and monthly backups to keep — older ones are pruned automatically
  • Manual backups, imported dumps, and automatic pre-restore snapshots are never auto-deleted, regardless of retention settings
  • A single Backups page lists every backup across your whole organization, with search, sort, and pagination — status, size, destination, and one-click download

Restoring Safely

Restore is the most destructive action in SPCBot, so every restore runs through the same guardrails, in order:

  1. The backup is verified (checksum + structural check) before anything on the target is touched
  2. An automatic snapshot of the target is taken first — there is no way to skip this step
  3. You must type RESTORE to confirm, and the dialog names the exact target instance
  4. A backup from one instance can be restored onto a different instance (e.g. production onto staging) as long as they run the same Odoo version

Point-in-Time Recovery

Beyond scheduled backups, each instance can enable continuous WAL archiving — restore its database to any specific second, not just to the moment of the last snapshot.

  • Turn it on per instance, from that instance's own Backups tab — enabling briefly restarts the database to apply the setting, then takes a first base backup automatically
  • Choose a destination — Cloudflare R2, S3-compatible storage, Google Cloud Storage, or another of your own registered servers — and how many days of history to keep. Storing WAL on the instance's own local disk isn't offered, since it wouldn't survive a server loss or the restore process itself
  • Pick a point in time within the recoverable window, type RESTORE to confirm, and the database is rolled back to that exact second — an automatic snapshot is taken first so the restore itself can always be undone
  • The database is restored to the exact second chosen; the filestore is not rolled back as part of point-in-time recovery — attachments added after that moment remain in place. Restore a regular scheduled backup instead when you need the filestore rolled back too
On the roadmap

Streaming replication (a continuously up-to-date hot standby) is the only remaining item on the backup/recovery roadmap — not built yet. Scheduled backups and point-in-time recovery are both available today.

Database Placement & Version

Choose where an instance's PostgreSQL database runs and which version it runs, at creation time.

Pick a Version

Every instance is created with a PostgreSQL version selected from an admin-managed list, instead of a single fixed version — useful for matching the version a dump was originally taken from.

Choose Where It Runs

PlacementDescription
Same server (default)Database runs alongside Odoo on the same server, in its own container — today's default behavior, unchanged
Another of your serversSPCBot runs the database on a different server you've already registered — either as a dedicated container, or by reusing that server's existing PostgreSQL install if it already has one (detected automatically)
Managed database serviceConnect to a database you already run elsewhere (e.g. Google Cloud SQL) — SPCBot only connects to it, it never provisions or manages that database
Set once, at creation

Placement and version cannot be changed after the instance is created — plan ahead, or create a new instance with the placement you need.

Backups and point-in-time recovery are co-located only, today

Scheduled backups and point-in-time recovery currently require the database to be on the same server as the instance. An instance using an external database placement should rely on its own database provider's backup tooling for now.

Environment Variables

Configure per-instance settings securely with inline editing.

Variable Types

TypeStorageDisplay
RegularPlain textVisible value
SecretEncrypted (AES-256)Hidden (••••••••)
SystemEncryptedRead-only (e.g., _ODOO_MASTER_PASSWORD)

Odoo Configuration

Special ODOO_* variables are injected into odoo.conf:

  • ODOO_WORKERS=4 → Sets worker processes
  • ODOO_LOG_LEVEL=debug → Sets logging level
  • ODOO_LIMIT_MEMORY=8589934592 → Memory limits

Inline Editing Features

  • Double-click to edit any user variable
  • Enter to save, Escape to cancel
  • Blur auto-saves if value changed
  • Toggle secret checkbox during edit
  • Hover reveals edit button