Installation (NanoFleet UI)
Deploy and manage multiple AI agents with a full web dashboard — deploy agents, install plugins, and configure channels from a single interface.
Prerequisites
- Docker and Docker Compose installed
- Port
8080available on your machine
Clone and configure
git clone https://github.com/NanoFleet/nanofleet.git
cd nanofleet
cp apps/api/.env.example apps/api/.env
Edit .env and fill in the required secrets as well as the origins that will be used (localhost or your domain)
ALLOWED_ORIGINS=http://localhost:5173,http://localhost:5174
ENCRYPTION_KEY=<random 32-byte hex>
ACCESS_TOKEN_SECRET=<random string>
REFRESH_TOKEN_SECRET=<random string>
Generate them with:
openssl rand -hex 32
Start the stack
docker compose up --build
The first build takes a few minutes. Once started, the API and dashboard are available at http://localhost:8080.
First login
On first startup, NanoFleet runs in Bootstrap Mode:
- A temporary password is printed in the terminal output — copy it.
- A QR code is displayed — scan it with your authenticator app (Google Authenticator, Authy, etc.) to set up 2FA.
- Open
http://localhost:8080in your browser and log in with the temporary password + 2FA code. - You’ll be prompted to set a permanent password.
Access the dashboard
After login, you land on the Fleet Dashboard where you can:
- Deploy and manage agents
- Install plugins
- Configure channels (Telegram, Discord, webhook)
- Monitor live logs and token usage
Deployment options
Option 1 — Local (default)
By default, NanoFleet is accessible at http://localhost:8080. No additional configuration needed.
Option 2 — Domain + HTTPS (Traefik)
NanoFleet’s docker-compose.yml includes Traefik under a prod profile that handles TLS automatically via Let’s Encrypt.
Create a .env at the project root with your domain and email (Docker Compose loads it automatically for variable substitution):
DOMAIN=yourdomain.com
ACME_EMAIL=you@example.com
Then start with the prod profile:
docker compose --profile prod up -d
Point your DNS A record to the server’s public IP. Traefik will obtain a certificate automatically on first startup and NanoFleet will be available at https://yourdomain.com.
Option 3 — SSH tunnel (remote server, no domain)
If you’re running NanoFleet on a remote server and don’t want to expose it publicly, forward the port over SSH from your local machine:
ssh -L 8080:localhost:8080 user@your-server
Then open http://localhost:8080 in your browser. No TLS required, no firewall changes, no domain needed.