Deploy any Basecamp ONCE app or your own vibe-coded app to your own infrastructure. BigConfig provisions the server, wires up DNS and SMTP, configures the host, and hands operations to your agent.
For teams who want total control — without operational headaches.
The BigConfig once package is everything between "I vibecoded the application" and "it's live on my domain" — codified, agent-operable, and yours to keep.
The app you vibecoded, running on infrastructure you own. No vendor lock-in, no hosting subscription, no surprise bill.
Hetzner Cloud, Oracle Cloud, or bring your own server with no-infra. One package, every target — swap profiles in bb.edn.
Cloudflare records are generated from your config — including the records needed for SMTP domain verification.
Resend is wired up end-to-end — domain verification, DKIM, SPF — so your ONCE app can send mail from day one.
Docker, firewall, TLS, s-nail SMTP test harness — every machine-level concern codified as a playbook, not a wiki page.
`bb once create` and `bb once delete`. Agent-operable, reproducible, reversible — spin it up, tear it down, leave no orphaned resources.
Describe the deployment in plain English. Your agent refines the plan,
writes a single bb.edn, and runs it.
You need to create a project to deploy a Basecamp ONCE app.
This project contains only the `bb.edn` file.
The `bb.edn` contains the dependency https://github.com/amiorin/once
You can download https://github.com/amiorin/once to see how it works.
https://github.com/amiorin/once is built on top of https://github.com/amiorin/big-config
All the options should be defined in the `bb.edn`.
Only the `once` task should be created.
The domain is example.com.
The host is chat.example.com.
The container is basecamp/once-campfire:latest
The compute provider is Hetzner with 4 GB, 2 vCPU, and 40 GB of disk.
The DNS provider is Cloudflare.
The SMTP provider is Resend.
You need to create the `.envrc` for HCLOUD_TOKEN, CLOUDFLARE_API_TOKEN, RESEND_API_KEY — I will provide the values later. {:deps {io.github.amiorin/once {:git/url "https://github.com/amiorin/once"
:git/sha "8ffbbc2ea0974365575c7ee44b7d890e69447144"}}
:tasks {:requires ([io.github.amiorin.once.package :as pkg])
once {:doc "bb once create | bb once delete"
:task (pkg/once*
*command-line-args*
{:big-config.render/profile "campfire"
:big-config.workflow/params
{:domain "example.com"
:package "campfire"
:once {:applications [{:host "chat.example.com"
:image "basecamp/once-campfire:latest"}]}
:provider-compute "hcloud"
:hcloud-server-type "cax21"
:hcloud-location "nbg1"
:hcloud-image "ubuntu-24.04"
:hcloud-ssh-keys ["id_ed25519"]
:provider-smtp "resend"
:resend-server "smtp.resend.com"
:resend-port 587
:resend-username "resend"
:provider-dns "cloudflare"
:provider-backend "s3"}})}}} $ bb once create
$ bb once delete
Which ONCE app, what size server, which domain. The agent turns
the conversation into a single bb.edn.
bb once create
provisions the server, configures DNS and SMTP, installs Docker,
pulls the container, hands you a URL.
Backups, upgrades, teardown — every runbook is a BigConfig workflow your agent can execute on your behalf.