PaaS for the htmx-r Ecosystem

🖥️ Serve-R

A platform-as-a-service built for Go + htmx-r applications. One CLI command packages your project, builds it on the server, and gives you a live URL with subdomain routing — in seconds, not minutes.

1 Command to Deploy
0 Dockerfiles Required
0 External Dependencies
1 Binary — Entire Platform
Capabilities

What Serve-R Does

🚀

One-Command Deploy

Run serve-r deploy from your project root. Source is archived, uploaded, compiled on the server, and launched — all in one step. SSE streams build logs to your terminal in real time.

CLItar.gz UploadSSE Logs
🌐

Subdomain Routing

Every deployment gets an instant subdomain: your-app.serve-r.adrienbird.net. Reverse proxy routes by hostname — no nginx config, no Caddyfile.

Reverse ProxyAuto-RoutingZero Config
🔗

Custom Domains

Add any domain to any deployment. Serve-R provides the CNAME target, verifies DNS propagation on demand, and activates the route.

CNAME VerifyDNS CheckMulti-Domain
🔑

Environment Variables

Set, list, and unset env vars per deployment from CLI or dashboard. Injected at launch, persisted in SQLite — no .env files.

Per-DeployMasked DisplayKEY=VALUE
📊

Management Dashboard

htmx-r powered dashboard showing all deployments, status, URLs, and age. Drill into any deployment for domain, env, and build log management.

HTMX-RReal-TimeMulti-Site

Health Checks & Process Management

After build, Serve-R polls the app for up to 15 seconds. Health check passes, traffic routes immediately. Process exits, it's cleaned up automatically.

Auto-HealPort DiscoveryProcess Watch
Why Serve-R

What Sets It Apart

1. Built for htmx-r, Not Generic PaaS

Reads htmx-r.toml for config, discovers Go entrypoints automatically, and sets PORT. No Procfile, no buildpack, no Dockerfile required.

Automatic entrypoint detection across cmd/* subdirectories.

2. Single Binary, Zero Dependencies

HTTP server, reverse proxy, SQLite database, build runner, and process manager — all in one Go binary. No Redis, no Postgres, no Docker daemon.

SQLite WAL mode for concurrent reads with single-writer safety.

3. SSE Build Logs, Not Polling

Build output streams to your terminal over Server-Sent Events as it happens. Every log line from go mod tidy through startup appears in real time.

Channel-based log pipeline with 200-line buffer.

4. CLI-First, Dashboard-Second

The serve-r CLI handles login, deploy, status, domains, and env vars. Every operation is available from the terminal. Developers stay in their flow.

Config at ~/.serve-r/config.json — one file, portable.

Technology

Built With

Server
Go net/http with stdlib ServeMux
Database
SQLite via modernc.org/sqlite — pure Go, WAL mode
Frontend
htmx-r reactive state + HTMX 2
Proxy
Go httputil.ReverseProxy — subdomain and custom domain routing
CLI
Single Go binary — login, deploy, domains, env, status
FAQ

Common Questions

What kinds of apps can I deploy?

Any Go web application that listens on a PORT env var. Optimized for htmx-r but works with Chi, Gorilla Mux, Echo, or stdlib net/http.

Do I need Docker?

No. Serve-R builds Go source directly on the server. You can also upload a pre-built binary to skip compilation entirely.

How does custom domain routing work?

Add a domain, point CNAME to the target Serve-R provides, run serve-r domains verify. Route activates when DNS resolves correctly.

Is there a deployment size limit?

200 MB per archive. Typical htmx-r project source archives are under 1 MB since .git is excluded. Pre-built binaries are 10-30 MB.

Ready to Get Started?

Deploy htmx-r apps with one command. Subdomain routing, custom domains, SSE build logs, and zero Dockerfiles.