Skip to content
NanoFleet NanoFleet

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 8080 available 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:

  1. A temporary password is printed in the terminal output — copy it.
  2. A QR code is displayed — scan it with your authenticator app (Google Authenticator, Authy, etc.) to set up 2FA.
  3. Open http://localhost:8080 in your browser and log in with the temporary password + 2FA code.
  4. 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.