Browse docs
Setup

Run It on Your Computer

One script brings up the full stack with Docker: API, MCP server, worker, database, and admin. No Python install needed.

Updated Aug 2026
On this page

By the end of this page the full product is running on your machine: API, MCP server, background worker, Postgres, and Redis. You will not install Python. Docker does everything.

What you need first

  • Docker Desktop. Install from docker.com, start it, and wait until its whale icon says it's running.
  • The code from Get the Code.

1. Run the stack script

Open a terminal in your code folder (in Windows Explorer: right click the folder → "Open in Terminal").

Windows (PowerShell):

.\scripts\stack-up.ps1

macOS / Linux:

./scripts/stack-up.sh

The script creates your .env config file, generates real secret keys, builds the Docker images, starts 5 services, and waits until the app answers. First run builds everything and takes a few minutes. After that it's about a minute: our measured fresh-clone run was 58 seconds from clone to healthy.

When it finishes you get this, and the four addresses are the whole product:

The stack-up script's closing summary, listing the app, docs, healthz and admin addresses
Your admin address has a different random suffix to the one here. That is deliberate: a guessable admin URL is a scanned admin URL.

Windows says 'running scripts is disabled'?

Run this once in the same terminal, then retry: Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Port already taken?

If the script fails with Bind for 0.0.0.0:8000 failed: port is already allocated, something else on your machine uses port 8000. Open .env, add a line WEB_PORT=8010, and run the script again. Everything adapts automatically. (docker ps shows you which container holds a port when nothing else seems to.)

2. Look around

When the script prints its green summary:

  • The app: http://localhost:8000/ (your port may differ if you set WEB_PORT)
  • The docs site: http://localhost:8000/docs/: every endpoint, with a live Try-it panel
  • The admin console: the script prints your private admin URL (it's randomized on purpose; it's also in .env under DJANGO_ADMIN_URL_PATH)
The docs site listing five reference endpoints in a sidebar, with guides for authentication, MCP setup and rate limits
Five reference endpoints ship with the template. Yours will appear in this same list without you writing a docs page for it.

The site says {{APP_NAME}} everywhere. That placeholder is intentional. Renaming it is a 2-minute step in Make It Yours.

3. Create demo data

docker compose exec web python manage.py seed_demo

This creates two plans, a demo user, sample logs, and prints a demo API key exactly once. Copy that mcpsk_... key somewhere: the next pages use it.

4. Make your first API call

Windows (PowerShell):

Invoke-RestMethod -Uri http://127.0.0.1:8000/api/v1/hello -Method Post -ContentType 'application/json' -Body '{"name":"world"}'

macOS / Linux:

curl -X POST http://127.0.0.1:8000/api/v1/hello -H "Content-Type: application/json" -d '{"name":"world"}'

Both answer:

{"greeting": "Hi, world"}

That response travelled through the real production plumbing: request logging, rate limiting, the works.

Why 127.0.0.1 and not localhost?

In browsers, use either. In terminal commands we always write 127.0.0.1 because on some Windows machines localhost resolves in a way that hangs command-line tools. Same address, fewer surprises.

5. Log in (no passwords here)

The product uses magic-link login. On the login page, enter [email protected]. In local mode the email isn't sent, it's printed to the app's log:

docker compose logs web --tail 50

Find the line with the magic link, paste it into your browser, and you're in the demo user's dashboard.

The demo user's dashboard: plan, credit balance, a 30-day request chart, and a recent activity table
This is the real dashboard your users get, on your machine, four commands in.

The red 'credits running low' banner is expected

seed_demo gives the demo user sample traffic and a zero balance, so the low-credit warning is showing you a working feature rather than a broken setup. You grant yourself credits in Charge Credits For It.

Stopping and restarting

.\scripts\stack-up.ps1 -Down     # stop (keeps your data)
.\scripts\stack-up.ps1          # start again
.\scripts\stack-up.ps1 -Nuke     # stop AND wipe the database

Next: Open It in Claude Code.

Stop wiring plumbing. Start selling endpoints.

Django and FastMCP boilerplate for Claude Code: one Python class becomes a REST endpoint, an MCP tool and live docs, with billing, credits and OAuth wired. The stack behind ToolerBox.

Get it for $79 →