Install the Tower
This page gets Botfather running on your machine so you can start enrolling SLAW instances.
- Node.js 20 or later and pnpm 9 installed
- The Botfather source repository cloned locally
- (Optional) A running SLAW instance to enroll — you can install the tower first and enroll later
1. Install dependencies
From the root of the Botfather repository:
pnpm install
2. Start the server
pnpm dev
Botfather boots an embedded Postgres database automatically — no external database setup required. On first run you'll see output like:
botfather: provisioning database (embedded Postgres)…
botfather listening on :8400
The server is ready when you see botfather listening on :8400.
What's running:
| Service | Address | Note |
|---|---|---|
| Botfather API | http://localhost:8400 | Instance ingest + admin API |
| Embedded Postgres | localhost:54330 | Auto-started; data persists across restarts |
3. Start the admin UI
Open a second terminal and run:
pnpm run dev:ui
The UI starts on http://localhost:5174 and proxies all /api requests to the server on :8400.
Open http://localhost:5174 in your browser to reach the Botfather Fleet dashboard.
To use an existing Postgres instance instead of the embedded one, set BOTFATHER_DATABASE_URL before starting:
BOTFATHER_DATABASE_URL=postgres://user:pass@host:5432/botfather pnpm dev
When this variable is set, the embedded Postgres does not start.
Verify the installation
The Fleet screen should load with an empty instance list — that's expected. Your SLAW instances will appear here once they enroll.
You can also hit the API directly:
curl http://localhost:8400/api/admin/fleet
A {"instances":[]} response confirms the tower is up and the database is ready.
Next steps
- Enroll an Instance — configure
botfather.urlon a SLAW instance and step through the approval flow - Approve & Go — manage the approval queue and set up auto-approve rules