Skip to main content

Install the Tower

This page gets Botfather running on your machine so you can start enrolling SLAW instances.

Prerequisites
  • 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:

ServiceAddressNote
Botfather APIhttp://localhost:8400Instance ingest + admin API
Embedded Postgreslocalhost:54330Auto-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.

External database

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.url on a SLAW instance and step through the approval flow
  • Approve & Go — manage the approval queue and set up auto-approve rules