This guide covers how to run a local AWS emulator so the dashboard can operate without a real AWS account.
Two emulators are supported: Floci (recommended) and LocalStack (alternative). Both expose the same endpoint (http://localhost:4566) so the rest of the configuration is identical.
Floci is a free, MIT-licensed AWS emulator with no authentication token required. It supports 52+ AWS services and uses real Docker backends for Lambda, RDS, ECS, and EKS.
Floci was created because LocalStack froze free-tier security updates in March 2026. Floci is the recommended emulator for this project.
Create a docker-compose.yml in a local working directory (do not commit it to this repo — it is intentionally absent):
services:
floci:
image: floci/floci:latest
ports:
- "4566:4566"Start it:
docker compose up -dIf you have the Floci CLI installed:
floci start
eval $(floci env) # exports AWS_* env vars automaticallySee Floci's official documentation for CLI install instructions and the full list of supported services.
AWS_ENDPOINT_URL=http://localhost:4566
AWS_DEFAULT_REGION=us-east-1
AWS_ACCESS_KEY_ID=test
AWS_SECRET_ACCESS_KEY=testLocalStack is the original local AWS emulator. Latest features require an auth token.
services:
localstack:
image: localstack/localstack
ports:
- "4566:4566"
environment:
- SERVICES=s3,sqs,dynamodb,lambda,sns,logsStart it:
docker compose up -dDo not pin a specific image version — use
latest stable. See LocalStack's official Docker Hub page for current release notes.
Same as Floci:
AWS_ENDPOINT_URL=http://localhost:4566
AWS_DEFAULT_REGION=us-east-1
AWS_ACCESS_KEY_ID=test
AWS_SECRET_ACCESS_KEY=testThere are two ways to configure the endpoint:
Set AWS_ENDPOINT_URL in your .env.local file or shell before running pnpm dev. See Getting Started for the full variable list.
The dashboard has a Settings page that lets you configure the endpoint at runtime. The value is stored in an httpOnly cookie, which means it is sent with every server-side request but is not accessible to client-side JavaScript.
The app resolves the active endpoint in this order (first match wins):
- Active profile — profile selected in the Settings UI
- Region-override cookie — set via the Settings UI region picker
- Endpoint-override cookie — set via the Settings UI endpoint field
AWS_ENDPOINT_URLenvironment variable — fallback for local dev
Once your emulator is running, confirm it is reachable:
curl -s http://localhost:4566/_localstack/health | head -5
# or for Floci:
curl -s http://localhost:4566/You should receive a JSON response. If you get a connection-refused error, the emulator is not running — see Troubleshooting below.
| Symptom | Likely cause | Fix |
|---|---|---|
Connection refused on port 4566 |
Emulator not running | Run docker compose up -d and check docker ps |
| Dashboard shows "endpoint not configured" | AWS_ENDPOINT_URL not set |
Add it to .env.local and restart pnpm dev |
| Services return 404 | Wrong port or emulator | Confirm docker ps shows port 4566 mapped |
| CORS errors in browser console | Browser making direct AWS calls | All AWS SDK calls must be server-side only — see Architecture |
Missing AWS_ENDPOINT_URL |
Env var not exported | Confirm with echo $AWS_ENDPOINT_URL before running pnpm dev |