Self-host Leothos

Your infrastructure. Your operating decisions.

Run the AGPL-licensed source with your own hosted Supabase project or with a fully local Supabase stack. You control the data and the deployment.

Step 1

Choose your Supabase path

For an existing Supabase project, link the CLI and run npx supabase db push. For a fully local stack, the setup script runs the official supabase start workflow through Docker. Both paths apply the same migrations:

  1. 001_init.sql
  2. 002_imessage_sync.sql
  3. 003_pocket.sql
  4. 004_person_crm_insights.sql
  5. 005_contact_tasks.sql
  6. 006_catch_up_plans.sql
  7. 007_mcp_connections.sql
  8. 008_birthday_and_person_tasks.sql
  9. 009_generalise_tasks.sql
  10. 010_groups.sql
  11. 011_remove_pending_handles.sql

Step 2

Run Leothos

Use Node.js 20.12 or newer. The local path creates an ignored env file from CLI-generated credentials and starts the production Docker image:

npm ci
npm run self-host:local

For your own Supabase project, copy .env.example, set its URL and anon key, link the project, then run npm run self-host:byo. Configure production Auth redirect URLs before inviting users.

Step 3

Add only the integrations you need

iMessage

Run the local imsg worker on a Mac. It requires Full Disk Access and separate server credentials.

Pocket

Configure a signed webhook plus optional AI model credentials for transcript context extraction.

MCP

Build the local MCP package, create a revocable connection from AI integrations, then install a skill from the Skills page.

Source availability

Leothos source is licensed under the GNU Affero General Public License v3.0 only, with the canonical terms included in the repository's LICENSE file. There are no additional use restrictions.

Prefer managed hosting? Compare plans.