Review every command the agent suggests before running it. Never share your ETH private key or keystore password with any AI agent or paste it into a prompt.
- Copy the full prompt from the block below.
- Paste it into your AI coding agent (Cursor, Claude Code, GitHub Copilot Workspace, etc.).
- Answer any clarifying questions the agent asks (OS, gateway mode, wallet address, etc.).
- Let the agent do the work — it will run commands, create config files, and verify each step.
livepeer-gateway-setup-prompt.txt
Copy
Ask AI
# LIVEPEER GATEWAY SETUP
You are setting up a Livepeer Gateway node for me. Work through each stage in order,
verify success before continuing, and fix errors before moving on.
---
## STAGE 0 — ASK ME FIRST
Before doing anything, ask me:
1. OS: Linux, macOS, or Windows?
2. Gateway mode: off-chain (dev/test, no wallet needed) or on-chain (production, Arbitrum ETH required)?
3. Gateway type: Video Only, AI Only, or Dual (AI + Video)?
4. On-chain only: do you have an Arbitrum One wallet address? If not, I'll create one.
5. On-chain only: do you have an Arbitrum RPC URL? If not, use https://arb1.arbitrum.io/rpc (free, rate-limited).
Then follow the correct path below based on the answers.
---
## STAGE 1 — OS-SPECIFIC INSTALL
### Linux (recommended for production — supports all gateway types)
Download and install the pre-built binary:
curl -LO https://github.com/livepeer/go-livepeer/releases/latest/download/livepeer-linux-amd64.tar.gz
sudo tar -zxvf livepeer-linux-amd64.tar.gz
sudo mv livepeer-linux-amd64/* /usr/local/bin/
livepeer -version
Or use Docker (also fully supported on Linux):
docker pull livepeer/go-livepeer:master
docker volume create gateway-lpData
### macOS (dev/local only — Video Only or off-chain only; Docker often fails on macOS)
Use the binary instead of Docker:
# Intel:
curl -LO https://github.com/livepeer/go-livepeer/releases/latest/download/livepeer-darwin-amd64.tar.gz
# Apple Silicon:
curl -LO https://github.com/livepeer/go-livepeer/releases/latest/download/livepeer-darwin-arm64.tar.gz
tar -zxvf livepeer-darwin-*.tar.gz
sudo mv livepeer-darwin-*/* /usr/local/bin/
Warn the user: macOS cannot run AI or Dual gateway types in production.
AI and Dual modes require Linux. macOS is suitable for off-chain Video Only only.
### Windows (run via WSL2 — Video Only or Docker-based)
Native Windows binaries are not supported for production. Use WSL2:
# In PowerShell (Admin):
wsl --install
# Reboot, then enter WSL:
wsl
Inside WSL2, follow the Linux binary steps above.
For a Windows-native .bat launcher (Video Only, off-chain):
Create gateway.bat in the same directory as livepeer.exe:
Off-chain:
livepeer.exe -network=offchain -gateway -cliAddr=127.0.0.1:5935
-rtmpAddr=0.0.0.0:1935 -httpAddr=0.0.0.0:8935 -monitor=true -v=6
PAUSE
On-chain:
livepeer.exe -network=arbitrum-one-mainnet -ethUrl=<RPC_URL>
-ethAcctAddr=<WALLET_ADDRESS> -ethPassword=<PASSWORD>
-ethKeystorePath=<KEYSTORE_PATH> -gateway -cliAddr=127.0.0.1:5935
-rtmpAddr=0.0.0.0:1935 -httpAddr=0.0.0.0:8935 -maxPricePerUnit=300
-monitor=true -v=6
PAUSE
Store the ETH password in: C:\Users\<USERNAME>\.lpData\ethsecret.txt
Then use -ethPassword=C:\Users\<USERNAME>\.lpData\ethsecret.txt
> The binary was previously called "Broadcaster". Always use -gateway, never -broadcaster.
---
## STAGE 2 — GATEWAY TYPE CONFIGURATION
Use the correct config for the type chosen in Stage 0.
For Docker, create a docker-compose.yml. For binary, run the equivalent flags directly.
### VIDEO ONLY
Off-chain docker-compose.yml:
command: >
-gateway -network offchain
-rtmpAddr=0.0.0.0:1935 -httpAddr=0.0.0.0:8935 -cliAddr=0.0.0.0:5935
-orchAddr=<ORCHESTRATOR_ADDRESS>
-transcodingOptions=P240p30fps16x9,P360p30fps16x9,P720p30fps16x9
-maxPricePerUnit=0 -pixelsPerUnit=1 -monitor=true -v=6
On-chain adds:
-network arbitrum-one-mainnet -ethUrl=<RPC_URL>
-ethAcctAddr=<WALLET> -ethKeystorePath=/root/.lpData/keystore
-ethPassword=<PASSWORD> -maxPricePerUnit=300 -blockPollingInterval=20
Data dir: /root/.lpData/offchain/ (off-chain) or /root/.lpData/arbitrum-one-mainnet/ (on-chain)
### AI ONLY
Requires Linux. Create an aiModels.json:
[
{ "pipeline": "text-to-image", "model_id": "stabilityai/sd-turbo", "warm": true },
{ "pipeline": "image-to-image", "model_id": "stabilityai/sd-turbo", "warm": false }
]
Create a models/ directory: mkdir -p models
Off-chain docker-compose.yml:
volumes:
- gateway-lpData:/root/.lpData
- ./models:/root/.lpData/models
- ./aiModels.json:/root/.lpData/aiModels.json
command: >
-gateway -network offchain
-rtmpAddr=0.0.0.0:1935 -httpAddr=0.0.0.0:8935 -cliAddr=0.0.0.0:5935
-orchAddr=<AI_ORCHESTRATOR_ADDRESS>
-aiModels=/root/.lpData/aiModels.json
-aiModelsDir=/root/.lpData/models
-httpIngest -aiServiceRegistry
-maxPricePerUnit=0 -monitor=true -v=6
On-chain adds the same ETH flags as Video Only above.
### DUAL (AI + VIDEO) — Linux only
Combines both. Needs aiModels.json and models/ directory (same as AI Only above).
Off-chain docker-compose.yml:
volumes:
- gateway-lpData:/root/.lpData
- ./models:/root/.lpData/models
- ./aiModels.json:/root/.lpData/aiModels.json
command: >
-gateway -network offchain
-rtmpAddr=0.0.0.0:1935 -httpAddr=0.0.0.0:8935 -cliAddr=0.0.0.0:5935
-orchAddr=<ORCHESTRATOR_ADDRESS>
-transcodingOptions=P240p30fps16x9,P360p30fps16x9,P720p30fps16x9
-aiModels=/root/.lpData/aiModels.json
-aiModelsDir=/root/.lpData/models
-httpIngest -aiServiceRegistry
-maxPricePerUnit=0 -pixelsPerUnit=1 -livePaymentInterval=5s
-monitor=true -v=6
On-chain adds the same ETH flags as above.
For all types, expose ports: 1935, 8935, 5935.
SECURITY: never commit keystore files, aiModels.json with tokens, or password files to version control.
---
## STAGE 3 — WALLET SETUP (on-chain only)
If no wallet exists, generate one by starting the gateway interactively:
docker run -it --rm -v gateway-lpData:/root/.lpData livepeer/go-livepeer:master \
-gateway -network arbitrum-one-mainnet -ethUrl=<RPC_URL>
When prompted, set a strong password. Note the ETH address shown. CTRL+C to exit.
Keystore location: /root/.lpData/arbitrum-one-mainnet/keystore/
---
## STAGE 4 — FUND (on-chain only)
Send ETH on Arbitrum One to the gateway wallet.
Minimum for testing: 0.1 ETH. Production: 0.5+ ETH.
Set deposit and reserve via the Livepeer CLI:
docker run -it --network host livepeer/go-livepeer:master \
livepeer_cli --host=localhost --http=5935
Choose Option 11 — "deposit broadcasting funds":
Deposit: 0.065 ETH (testing minimum)
Reserve: 0.03 ETH (use 0.36 ETH for production)
Verify with Option 1 — "get node status".
---
## STAGE 5 — START & VERIFY
docker compose up -d
docker compose logs --tail=50
Healthy log lines:
"LPMS Server listening on rtmp://0.0.0.0:1935"
"HTTP Server listening on http://0.0.0.0:8935"
"Unlocked ETH account" (on-chain only)
Verify:
curl http://localhost:8935/status
curl http://localhost:8935/metrics | head
curl http://localhost:8935/getNetworkCapabilities (on-chain)
Video test: push RTMP with FFmpeg, confirm HLS at http://localhost:8935/stream/test.m3u8
AI test: POST to http://localhost:8935/ai/text-to-image, confirm a response.
---
## DONE — REPORT BACK
- OS, gateway type, and mode used
- Wallet address (public key only — never the private key)
- Start/stop commands
- Any steps needing manual follow-up (funding, DNS, SSL)