One self-hosted binary. CRM + cookieless analytics — wired to a single contact core — instead of five SaaS subscriptions that don't talk to each other.
You're one person. You don't need an enterprise CRM, a separate outreach tool, a $14/mo analytics product, and a status-page subscription — each with its own login, its own bill, and its own silo of your customers. foundry puts the tools a solo software business actually runs on into one binary, on one $5 box, owning your own data.
- Single binary, zero runtime deps — embedded SQLite, templates, and assets. No Docker, no Postgres, no Node.
- Zero-config first run —
foundry serveand you're live; the admin password is generated for you. - One identity core — every module shares the same contacts table.
- Own your data — a SQLite file on your disk. Analytics is cookieless; no third party, no PII.
$ foundry serve
foundry 0.1.0 listening on :8080 (db: foundry.db)
┌──────────────────────────────────────────────
│ Admin password (auto-generated): 7f3c9a1b2d4e5f6071
│ Set FOUNDRY_ADMIN_PASSWORD to choose your own.
└──────────────────────────────────────────────
Open http://localhost:8080, sign in, and you have:
| Module | What it does |
|---|---|
| CRM | Contacts, a drag-your-pipeline kanban (lead → won/lost), per-contact notes. |
| Analytics | A one-line cookieless tracking snippet, a privacy-first dashboard: unique visitors, pageviews, top pages, referrers. |
| Pipeline board | Cookieless analytics |
|---|---|
![]() |
![]() |
| Move deals across stages — value rolls up per column. | Visitors, pageviews, top pages & referrers. No cookies, no PII. |
Download a release binary (Linux / macOS / Windows) from Releases, then:
./foundry serveOr build from source (Go 1.26+):
git clone https://github.com/Dukotah/foundry
cd foundry
make build # -> bin/foundry
./bin/foundry servefoundry serve \
--addr :8080 \ # listen address
--db /var/lib/foundry/app.db \ # SQLite file (created if absent)
--base-url https://app.you.com # used to build the analytics snippetConfigure via flags or environment variables:
| Flag | Env | Default |
|---|---|---|
--addr |
FOUNDRY_ADDR |
:8080 |
--db |
FOUNDRY_DB |
foundry.db |
--admin-password |
FOUNDRY_ADMIN_PASSWORD |
(generated) |
--base-url |
FOUNDRY_BASE_URL |
(empty) |
| — | FOUNDRY_SESSION_KEY |
(random per run; set it to keep sessions across restarts) |
Create a site in the Analytics tab, then drop the one-liner it gives you into your <head>:
<script defer src="https://app.you.com/a.js?site=YOUR_SITE_KEY"></script>That's it — cookieless, no consent banner required, your data stays on your server.
cmd/foundry entrypoint; wires config -> store -> server -> modules
internal/store embedded SQLite, migrations, the shared contact core
internal/server HTTP app, router, html/template engine, signed-cookie auth
internal/web embedded base layout, design CSS, htmx
internal/crm module: contacts, pipeline, notes
internal/analytics module: cookieless snippet, ingest, dashboard
Each feature is an independent package exposing Register(app). The server never
imports the modules — main wires them — so the codebase stays decoupled and new
modules (outreach, status page) drop in without touching the core. See
docs/solo-saas-os.md for the full architecture.
- CRM (contacts, pipeline, notes)
- Cookieless analytics (snippet, ingest, dashboard)
- Outreach — sequenced email via your own SMTP/Resend
- Public status + changelog page
- CSV import/export
- Multi-user / API tokens
MIT © Copper Bay Labs. Contributions welcome.

