Lightweight, containerized HTTP testing tool. The anti-Postman.
- Collections with folders, drag-and-drop ordering, and variables
- Environments with variable interpolation (
{{variable}}) - Request history with auto-pruning
- cURL import and code generation (cURL, JavaScript fetch, Python requests, C# HttpClient, PowerShell)
- Tabbed workspaces
- Monaco-powered JSON editor with syntax highlighting
- Dark theme (Bootstrap 5.3)
- Keyboard shortcuts for everything
- Single Docker container — no accounts, no cloud, no sync
- Create a
docker-compose.yml(or use the one included in this repo):
services:
dispatch:
image: ghcr.io/skillcape-software-llc/dispatch:latest
ports:
- "3000:3000"
volumes:
- dispatch-data:/data
restart: unless-stopped
environment:
NODE_ENV: production
volumes:
dispatch-data:- Run it:
docker compose up -dnpm install
npm run dev- Angular dev server: http://localhost:4200
- Fastify API: http://localhost:4000
- Health check: http://localhost:4000/api/health
Dispatch is a monorepo with two apps. The Angular 19 SPA (client/) talks to a Fastify REST API (server/) that acts as an HTTP proxy — all user requests go through the server to avoid CORS issues, handle auth, and capture accurate timing. Data is stored in LokiJS, an embedded NoSQL database that persists to a single JSON file on disk. In production, Fastify serves the Angular build as static files inside a single Docker container.
| Variable | Default | Description |
|---|---|---|
PORT |
3000 |
Server port (prod) |
DATA_DIR |
./data |
LokiJS data directory |
LOG_LEVEL |
info |
Pino log level |
Settings can also be configured in-app via the settings modal (gear icon), including request timeout, history limit, SSL verification, and proxy log level.
| Shortcut | Action |
|---|---|
Ctrl+Enter |
Send request |
Ctrl+S |
Save request to collection |
Ctrl+N |
New tab |
Ctrl+W |
Close tab |
Ctrl+E |
Focus environment selector |
Ctrl+/ |
Show keyboard shortcuts |
Data is stored in /data/dispatch.db.json inside the container. Mount a volume to persist across restarts:
docker run -p 3000:3000 -v dispatch-data:/data ghcr.io/skillcape-software-llc/dispatch:latestTo back up, copy the database file from the volume:
docker cp $(docker ps -qf name=dispatch):/data/dispatch.db.json ./backup.jsonTo restore, copy it back:
docker cp ./backup.json $(docker ps -qf name=dispatch):/data/dispatch.db.jsonThen restart the container to pick up the restored data.
The Docker Compose file includes log rotation by default (10 MB, 3 files). For standalone docker run, add:
docker run -p 3000:3000 -v dispatch-data:/data \
--log-opt max-size=10m --log-opt max-file=3 \
ghcr.io/skillcape-software-llc/dispatch:latestCopyright 2026 Skillcape Software LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.