Your whole backend,
one request away.
The real console for your whole stack: apps from GitHub, plus the databases they need (PostgreSQL, Redis, MySQL, or MongoDB), with fully-managed PostgreSQL, MySQL, Redis, and ClickHouse on AWS when you want it. All driven in plain English from your editor. Run the demo below, or explore it yourself.
Apps from GitHub · Postgres, Redis, MySQL, MongoDB · 150+ MCP tools · pay-as-you-go
console.selfhost.dev
Your highlights
Active Projects
0
all running
Managed Databases
0
1 on your AWS
System Health
0%
all operational
Storage Used
0 GB
across 4 volumes
MCP Tools
0+
agent-ready
Today’s Spend
$0
~19 days runway
Projects
Databases
Recent activity
Deployed acme/web #48 to acme-web
Backup completed for prod-db
analytics-db scaled to db.t4g.medium
Point-in-time recovery enabled on prod-db
Domain app.acme.com verified · SSL issued
acme-web
Ready $0.02/hr
Drag to arrange your architecture
marketing-site
Ready $0.02/hr
Drag to arrange your architecture
What goes in this project?
Deploy from GitHub
main
nixpacks (auto)
acme/web
Add a database
PostgreSQL 17
Adding…
acme/web
Live- Status
- Live
- Repository
- github.com/acme/web
- Branch
- main
- Build pack
- nixpacks
- Port
- 3000
- URL
https://acme-web.selfhost.dev
Deployment history
Run #49 · mainDeploying
Live
fix: checkout total
Rolled back
feat: new pricing page
Live
chore: bump deps
Domains
acme-web.selfhost.devHTTPS
app.acme.comHTTPS
Environment variables
DATABASE_URLpostgresql://app_rw@postgres:5432/app
REDIS_URLredis://redis:6379
NODE_ENVproduction
NEXT_PUBLIC_APIhttps://acme-web.selfhost.dev
24%
38%
1.2k
Danger zone
Deployed #48 from main
Domain app.acme.com verified
Rolled back #47 → #46
Env var NEXT_PUBLIC_API updated
postgres
Live- Status
- Live
- Type
- PostgreSQL 17
- Internal host
- postgres.acme-web.internal
- Port
- 5432
- Connection
postgresql://app@postgres.acme-web.internal:5432/app
12%
28%
6
Service started
Health check passed
Attached to acme-web
redis
Live- Status
- Live
- Type
- Redis
- Internal host
- redis.acme-web.internal
- Port
- 6379
- Connection
redis://redis.acme-web.internal:6379
12%
28%
6
Service started
Health check passed
Attached to acme-web
acme/marketing
Live- Status
- Live
- Type
- GitHub Repository
- Internal host
- acme-marketing.marketing-site.internal
12%
28%
6
Service started
Health check passed
Attached to marketing-site
prod-db
Healthy Health overview
CPUGood
31%
MemoryGood
54%
StorageGood
18%
Network I/OGood
2.4 MB/s
ConnectionsGood
86 / 200
Cache hitGood
99.2%
Replication lagGood
0.3 s
I/O waitGood
1.2%
Storage & I/O
- Read IOPS
- 1,240
- Write IOPS
- 320
- Read throughput
- 14 MB/s
- Write throughput
- 6 MB/s
PostgreSQL
- Transactions/sec
- 842
- Cache hit ratio
- 99.2%
- Active connections
- 86 / 200
- Slow queries/min
- 2
- Replication lag
- 0.3 s
Current size
Reactive rules
CPU > 80% for 5 min
→ Resize → db.r6g.xlarge · 30 min cooldown
Connections > 180 for 3 min
→ Add read replica · 15 min cooldown
Scheduled rules
Nightly · 01:00 UTC
→ Scale down → db.t4g.small
Weekday mornings
→ Scale up → db.r6g.large
CPU > 80% for 5m
Connections > 180
Disk > 90%
Replication lag > 10s
7
latest 3h ago
14d
daily · automated
On
7 days window
Point-in-time recoveryWAL → S3
Endpoint
- Host
- prod-db.cluster-x9.us-east-1.selfhost.dev
- Port
- 5432
- Username
- app_rw
- Connection string
postgresql://app_rw@prod-db.cluster-x9.us-east-1.selfhost.dev:5432/app
Connection pooling (PgBouncer)
- Status
- Enabled
- Pool mode
- transaction
- Max client conns
- 200
- Pooled port
- 6432
Database users
app_rw (read/write)
app_ro (read only)
admin
Instance configuration
db.r6g.large
PostgreSQL parameters
- max_connections
- 200
- shared_buffers
- 2GB
- work_mem
- 16MB
- effective_cache_size
- 6GB
Danger zone
analytics-db
Healthy Health overview
CPUGood
31%
MemoryGood
54%
StorageGood
18%
Network I/OGood
2.4 MB/s
ConnectionsGood
86 / 200
Cache hitGood
99.2%
Replication lagGood
0.3 s
I/O waitGood
1.2%
Storage & I/O
- Read IOPS
- 1,240
- Write IOPS
- 320
- Read throughput
- 14 MB/s
- Write throughput
- 6 MB/s
PostgreSQL
- Transactions/sec
- 842
- Cache hit ratio
- 97.8%
- Active connections
- 9 / 200
- Slow queries/min
- 2
- Replication lag
- n/a
Current size
Reactive rules
CPU > 80% for 5 min
→ Resize → db.r6g.xlarge · 30 min cooldown
Connections > 180 for 3 min
→ Add read replica · 15 min cooldown
Scheduled rules
Nightly · 01:00 UTC
→ Scale down → db.t4g.small
Weekday mornings
→ Scale up → db.r6g.large
CPU > 80% for 5m
Connections > 180
Disk > 90%
Replication lag > 10s
7
latest 3h ago
14d
daily · automated
Off
not configured
Point-in-time recovery is off
Endpoint
- Host
- analytics.eu-west-1.byoc.selfhost.dev
- Port
- 5432
- Username
- analyst
- Connection string
postgresql://analyst@analytics.eu-west-1.byoc.selfhost.dev:5432/app
Connection pooling (PgBouncer)
Pooling not configured
Database users
analyst (read only)
admin
Instance configuration
db.t4g.medium
PostgreSQL parameters
- max_connections
- 200
- shared_buffers
- 2GB
- work_mem
- 16MB
- effective_cache_size
- 6GB
Danger zone
payments-db
Healthy Health overview
CPUGood
31%
MemoryGood
54%
StorageGood
18%
Network I/OGood
2.4 MB/s
ConnectionsGood
86 / 200
Cache hitGood
99.2%
Replication lagGood
0.3 s
I/O waitGood
1.2%
Storage & I/O
- Read IOPS
- 1,240
- Write IOPS
- 320
- Read throughput
- 14 MB/s
- Write throughput
- 6 MB/s
PostgreSQL
- Transactions/sec
- 842
- Cache hit ratio
- 100%
- Active connections
- 1 / 200
- Slow queries/min
- 2
- Replication lag
- 0.3 s
Current size
Reactive rules
CPU > 80% for 5 min
→ Resize → db.r6g.xlarge · 30 min cooldown
Connections > 180 for 3 min
→ Add read replica · 15 min cooldown
Scheduled rules
Nightly · 01:00 UTC
→ Scale down → db.t4g.small
Weekday mornings
→ Scale up → db.r6g.large
CPU > 80% for 5m
Connections > 180
Disk > 90%
Replication lag > 10s
7
latest 3h ago
14d
daily · automated
On
7 days window
Point-in-time recoveryWAL → S3
Endpoint
- Host
- payments-db.cluster-q2.us-east-1.selfhost.dev
- Port
- 5432
- Username
- app_rw
- Connection string
postgresql://app_rw@payments-db.cluster-q2.us-east-1.selfhost.dev:5432/app
Connection pooling (PgBouncer)
- Status
- Enabled
- Pool mode
- transaction
- Max client conns
- 200
- Pooled port
- 6432
Database users
app_rw (read/write)
admin
Instance configuration
db.t4g.medium
PostgreSQL parameters
- max_connections
- 200
- shared_buffers
- 2GB
- work_mem
- 16MB
- effective_cache_size
- 6GB
Danger zone
Instance activity 3
Created payments-db · PostgreSQL 17 · us-east-1
analytics-db scaled to db.t4g.medium
Point-in-time recovery enabled on prod-db
Project activity 3
Deployed acme/web #48 to acme-web
Rolled back acme/web #47 → #46
Server provisioned for acme-web · Hetzner cx23
Snapshot activity 2
Automated backup completed for prod-db
Manual snapshot of analytics-db
Domains & SSL 1
app.acme.com verified · SSL issued
Organization 2
maya@acme.com invited as Member
Top-up of $25.00 · Razorpay
Pay-as-you-go credits
Team members
A Owner
Alex Rivera
M Member
Maya Chen
S Member
Sam Patel
Deployment succeeded / failed
Database alerts (CPU, connections, disk)
Backup completed
Low credit balance (under $20)
Weekly usage summary
Webhooks
https://hooks.acme.com/deploys
https://acme.slack.com/services/T0…
GitHub account
acme
Active
Bring your own cloudBYOC
AWS · 4810-2207-xxxx
Available credits
$45.32
$1.12 / day ~40 days runway
Payment method
Razorpay
•••• •••• •••• 4242
ALEX RIVERA04 / 28
Top up from $5 · pauses at $0 · keep $20+ for uninterrupted service
Wallet activity
Usage · compute, storage, egress
Top-up
Usage · prod-db
Welcome credit
New database
Basics
Cloud & region
AWS
us-east-1
Configuration
db.t4g.medium · 2 vCPU / 4 GB
PostgreSQL 17
Backups
14 days · daily
Review
- Name
- payments-db
- Engine
- PostgreSQL 17
- Region
- AWS · us-east-1 · Multi-AZ
- Storage
- 20 GB gp3
- Backups
- 14-day retention + PITR
Provisioning payments-db…
Everything here is interactive. Explore the console, or run a command to watch a full flow. In real use, you run these from your editor via MCP.
That felt easy because it is.
Sign up and your $1 credit runs a project or database free, no card needed. No tiers, no commitment, and everything pauses at $0 when you stop.