Prerequisites
System Requirements
System Requirements
| Component | Minimum | Recommended |
|---|---|---|
| OS | Linux x64 or ARM (Ubuntu 20.04+), macOS | Ubuntu 22.04 LTS |
| Memory | 4 GB RAM | 8 GB RAM |
| Storage | 10 GB SSD | 20 GB SSD |
| CPU | 2 vCPUs | 4 vCPUs |
Cloud Server Options
Cloud Server Options
Any cloud provider works. Popular choices:
- AWS EC2: t3.medium or larger
- Google Cloud: e2-medium or larger
- Digital Ocean: Basic Droplet with 4GB RAM
- Hetzner: CX21 or larger
http://hummingbot-api:8000 on your private tailnet.Tailscale (recommended for production)
Tailscale (recommended for production)
Create a free account at tailscale.com, then:
- Generate a reusable auth key at Settings → Keys (starts with
tskey-auth-) - Enable MagicDNS so
hummingbot-apiresolves by name - Install Tailscale on any device that should reach the API (your laptop, Condor host, etc.) and sign in to the same account
y when asked to enable Tailscale.Quick Install
- Quick Start
- Hummingbot API only
- Manual install
From an empty directory:
- Telegram Bot Token: Create one via @BotFather
- Telegram User ID: Get yours via @userinfobot
- Whether to configure and launch Hummingbot API with Docker—answer yes if you are deploying Condor and the API on the same machine locally. Have Docker installed and running first. If the API runs on another server, you can skip this step and add that API URL later in Telegram under
/servers. - Tailscale (when installing Hummingbot API): answer
yfor production or any remote setup; paste yourtskey-auth-...key when prompted
Create a Telegram Bot
- Open @BotFather in Telegram
- Send
/newbotand follow the prompts to name your bot - Copy the bot token (format:
123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
Get Your User ID
- Open @userinfobot in Telegram
- Send
/startto receive your user ID
Secure Remote Access with Tailscale
Use Tailscale when Condor and Hummingbot API run on different machines—for example Condor on your laptop and the API on a cloud VPS.On the API server
- Run the Hummingbot API only installer (or Quick Start with API enabled)
- When asked Use Tailscale for secure private networking?, answer
y - Paste your auth key and deploy:
On the Condor machine
- Install Tailscale and sign in to the same account
- In Telegram, open
/serversand add the API with:- Host:
hummingbot-api(MagicDNS name, not a public IP) - Port:
8000 - Username / Password: same as the API
.env
- Host:
Verify Installation
- Open your Telegram bot and send
/start - You should see the main menu with commands like
/portfolio,/trade,/agent
Note: After Condor starts successfully, admins should receive a Telegram message: “Condor is online and ready.” If that does not appear within a minute or two, check the troubleshooting section below (for example attach to the condor tmux session after Quick Start).
Access Points
| Service | Local URL | Tailnet URL (when Tailscale enabled) | Description |
|---|---|---|---|
| Telegram | Your bot | — | Primary interface |
| API | http://localhost:8000 | http://hummingbot-api:8000 | REST API |
| Swagger | http://localhost:8000/docs | http://hummingbot-api:8000/docs | API documentation |
| Web Dashboard | Run /web in Telegram | — | Browser interface |
Managing Services
How you manage Condor depends on how you installed it. After Quick Start (deploy installer): Condor runs in a tmux session namedcondor.
condor folder, you can also upgrade with:
make run (stop with Ctrl+C). Watch that terminal, or run under tmux yourself if you want a detachable session.
Hummingbot API (Docker): From the hummingbot-api directory (sibling of condor when installed by the deploy script):
Troubleshooting
Bot not responding in Telegram
Bot not responding in Telegram
- Confirm the process is running
- Quick Start / deploy:
tmux attach -t condorand look for tracebacks or exit messages. - Manual install: Check the terminal where
make runis running.
- Quick Start / deploy:
- Check
condor/.envon the machine that runs Condor:TELEGRAM_TOKENmust match @BotFather, andADMIN_USER_IDmust be your numeric Telegram user id (from @userinfobot). - Access still pending: New users must be approved. An admin should use
/admin(or the admin flow from/start) to approve you. - Deploy installer hint: If admins never see “Condor is online and ready.”, attach to tmux (above) and fix errors shown there; the installer also reminds you to verify
.envwhen that message is missing.
Active server is offline / Cannot reach server / API errors in commands
Active server is offline / Cannot reach server / API errors in commands
Condor talks to the Hummingbot API over HTTP using the host, port, username, and password stored for each server (see
/servers in Telegram or condor/config.yml). Status checks call http://{host}:{port} and list accounts; failures surface as Offline (Cannot reach server, Connection timeout) or Auth Error (Invalid credentials).- Is the API stack up? On the machine where Docker runs the API:
docker compose ps(from thehummingbot-apirepo directory). You want the API container healthy and port 8000 (default) listening. - Smoke test from the Condor host:
curl -sS -o /dev/null -w "%{http_code}" http://127.0.0.1:8000/docs(same machine) orcurl -u USER:PASS http://hummingbot-api:8000/health(Tailscale). You should get 200. If this fails, Condor will show offline until the API is reachable. - Wrong host for your layout
- API and Condor on the same machine:
hostis usuallylocalhostor127.0.0.1. - API on a different host or VPS: use
hummingbot-api(MagicDNS) when Tailscale is enabled—not a public IP and notlocalhost(localhost would point at the Condor machine itself). - Docker Desktop / WSL: If Condor runs in one environment and the API in another,
localhostmay not cross namespaces; use the host gateway IP or publish ports and use the reachable address from Condor’s network namespace.
- API and Condor on the same machine:
- Tailscale / firewall: Prefer Tailscale over opening port 8000 on a public firewall. If you must use a public IP, allow inbound 8000 only from the Condor host—but Tailscale is strongly recommended instead.
- Credentials: Auth Error means HTTP 401—username/password in
/serversmust match the API’s HTTP basic auth (the deploy flow syncsconfig.ymlwithhummingbot-api/.envwhen both are installed together; if you changed one side, align the other or re-save in/servers).
No servers configured / Server not found / No servers available
No servers configured / Server not found / No servers available
/serversshows No servers configured until at least one entry exists incondor/config.ymlunderservers:(and users need access to a server—admins own new entries; others must be shared).- Server not found in the UI usually means the configured server name does not exist anymore (typo after edit, or deleted entry)—open
/servers, pick a valid server, or add one again. - No servers available (errors when running commands) often means your user has no server shared with them—ask an owner admin to share a server with your Telegram user id.
- After Manual install, you must add the real API URL (and auth) via
/serversifconfig.ymlwas not pre-filled.
Docker or installer problems (API did not start)
Docker or installer problems (API did not start)
- Docker daemon: The deploy script checks that Docker is running before bringing up the API. On Linux:
docker info. On Mac/Windows: open Docker Desktop and wait until it is fully started. - Compose: You need either
docker compose(plugin) or legacydocker-compose(the installer checks this). - API-only recovery: If Quick Start skipped or failed the API step, use the Hummingbot API only tab command, or from
hummingbot-api:make setup,docker compose pull,make deploy(see hummingbot-api README). - Sibling layout: Condor’s setup wizard expects
hummingbot-apinext tocondor(../hummingbot-apifrom the Condor directory) when both are installed by the same flow—keep that layout unless you know how to pointconfig.ymlat a custom URL.
Tailscale not connecting
Tailscale not connecting
| Problem | Try this |
|---|---|
Name hummingbot-api does not work | Enable MagicDNS in Tailscale DNS settings |
| Auth key rejected | Key must start with tskey-auth-; generate a new one if it expired |
| Connection refused | On the API server: make tailscale-status and make deploy again |
| Login fails (401) | Use the same username/password as in the API .env |
| Still reachable on public IP | Remove port 8000 from your cloud provider’s firewall / security group |
Next Step
Adding Credentials
Connect your exchange accounts

