Documentation Index
Fetch the complete documentation index at: https://docs.livepeer.org/llms.txt
Use this file to discover all available pages before exploring further.
Livepeer Troubleshooting Index
Aggregated troubleshooting reference across audience-specific operational pages. Each section is mirrored from an audience tab; the original page remains available there with full operational context.Source pages
| Section | Source page | Audience |
|---|---|---|
| Gateway troubleshooting | /v2/Gateways/guides/monitoring-and-tooling/troubleshooting | Gateway |
| Orchestrator troubleshooting | /v2/Orchestrators/guides/monitoring-and-tooling/troubleshooting | Orchestrator |
Gateway troubleshooting
Source: /v2/Gateways/guides/monitoring-and-tooling/troubleshooting errors operators encounter. For “how does X work?” questions, see the .Video Issues
Gateway running but not receiving transcoding jobs
Gateway running but not receiving transcoding jobs
-maxPricePerUnit is set too low.-maxPricePerUnit is the maximum wei per pixel the Gateway pays Orchestrators. If Orchestrators on the network charge more than the cap, none accept jobs.Community standard for testing:-orchAddr list is specified, verify those addresses are active on Livepeer Explorer. Remove unreachable addresses and add active ones.4. Arbitrum RPC is disconnected.The Gateway requires a working Arbitrum RPC to issue and track payment tickets. See the Arbitrum RPC accordion below.Arbitrum RPC connection failing
Arbitrum RPC connection failing
result field containing a hex block number. A failed one returns an HTTP error or times out.Common causes and fixes:RPC endpoint options:- Infura: Infura.io (free tier available)
- Alchemy: Alchemy.com (free tier available)
- Public fallback:
https://arb1.arbitrum.io/rpc(rate-limited, not for production) - Self-hosted: Arbitrum full node guide
ETH deposit shows zero after bridging
ETH deposit shows zero after bridging
livepeer_cli after the bridge confirms.TicketParams expired errors in logs
TicketParams expired errors in logs
- If this error appears constantly (not intermittently) across all sessions, the Arbitrum RPC may be returning stale block numbers. Test the RPC with
eth_blockNumberand compare to Arbiscan’s current block. - If retries are consistently failing after the error, check
livepeer_payment_create_errorsin Prometheus.
Transcode session timed out or job lost
Transcode session timed out or job lost
- Re-publish the stream - the Gateway selects a new Orchestrator and session automatically.
- If it happens repeatedly: the Orchestrators in the pool may be dropping sessions. Remove underperforming addresses from
-orchAddrusing Explorer to find more reliable alternatives. - If CUDA errors appear in logs (
CUDA_ERROR_UNKNOWN,Cannot allocate memory) these originate on the Orchestrator side. The Gateway retries with a different Orchestrator automatically.
Gateway calling reward function unexpectedly
Gateway calling reward function unexpectedly
-reward=false is set in the launch command even when using a config file. Config file values can be overridden by command-line flags; always set reward=false explicitly on the command line.AI Issues
AI binary not available on Windows or macOS
AI binary not available on Windows or macOS
livepeer-windows-amd64) remains available and works normally for video transcoding workloads on Windows.AI Gateway starts but not receiving jobs
AI Gateway starts but not receiving jobs
-orchAddr that are currently online and running the requested pipeline. On-chain AI Gateways using -aiServiceRegistry discover Orchestrators automatically via the protocol.Check the -orchAddr list (off-chain):- Discord #local-Gateways - community operators share endpoints
- Livepeer Explorer - contact active Orchestrators directly
- Livepeer Forum - search for community AI Orchestrator lists
Some AI pipelines return errors but others work
Some AI pipelines return errors but others work
- The pipeline is not supported by the connected Orchestrators - they may support
text-to-imagebut notimage-to-video. - The model is not loaded - the Orchestrator supports the pipeline but the specific model variant (e.g.
ByteDance/SDXL-Lightning) is not warm. Some Orchestrators support cold loading (slower first request). - Model ID mismatch - the model ID string in the request must exactly match what the Orchestrator has. Case and formatting matter.
Diagnostic approach: Start with
text-to-imageusing a common model against a known-good Orchestrator before testing less common pipelines.
Cannot discover available AI models or pipelines
Cannot discover available AI models or pipelines
Dual Issues
Resource contention between video and AI
Resource contention between video and AI
- AI model loading failures during active video sessions
- Increased transcoding latency correlated with AI request peaks
- GPU memory at or near 100% in
/hardware/stats
- Reduce AI session concurrency with
-maxSessions - Schedule AI-heavy workloads during lower video traffic periods
- Separate video and AI onto dedicated nodes
Port conflict on startup
Port conflict on startup
-httpAddr port (default 8935). A Dual Gateway does not open two separate ports - the -httpIngest flag enables AI endpoints on the same port used for video.If the default port is occupied, check for lingering processes:Common Errors
listen tcp 0.0.0.0:8935: bind: address already in use
listen tcp 0.0.0.0:8935: bind: address already in use
livepeer process that did not exit cleanly. Check for lingering processes with ps aux | grep livepeer (Linux) or Task Manager (Windows) before restarting.libnppig.so.11: cannot open shared object file
libnppig.so.11: cannot open shared object file
Could not connect to Ethereum node
Could not connect to Ethereum node
-ethUrl flag and restart. See the Arbitrum RPC accordion under Video Issues for full diagnosis.ETH account unlock fails
ETH account unlock fails
datadir or network was used in the past, copy the keystore file to the expected location:Docker container exits immediately
Docker container exits immediately
-
ETH password file not mounted or wrong path inside container:
The volume mount must include the password file, and the path in
-ethPasswordmust be the path inside the container, not on the host. -
-cliAddrusinglocalhostinstead of the container hostname: -
Deprecated
version:field in docker-compose.yml: Remove theversion: '3.9'line at the top of the compose file - it is deprecated in current Docker Compose versions and can cause unexpected behaviour on some systems. -
Missing required flags:
On-chain Gateways require at minimum:
-network,-ethUrl,-ethKeystorePath,-ethPassword.
Cannot allocate memory with -nvidia flag
Cannot allocate memory with -nvidia flag
-nvidia flag means GPU encoding/decoding session limits were hit during startup tests. Different NVIDIA GPUs have different limits.This is a hardware constraint. Options:- Check the GPU’s session limits in the NVIDIA encode/decode support matrix
- Reduce concurrent sessions via
-maxSessions - Upgrade to a GPU with higher session limits for production workloads
Unsupported input pixel format
Unsupported input pixel format
yuv420p).If the stream is operator-controlled, add -pix_fmt yuv420p to the FFmpeg command.Log Interpretation
Enable verbose logging when diagnosing issues:Severity guide
Escalation
If none of the above resolves the issue, include the following in a support request:- Gateway node type (Video / AI / Dual)
- go-livepeer version (
./livepeer --version) - Operating system and architecture
- Exact error message (copy from logs)
- First 50 lines of startup logs (
-v 6) - Output of
livepeer_cliOption 1 (Get node status) - redact the ETH private key path
Discord #local-gateways
Livepeer Forum
gateway and go-livepeer.Report a docs gap
Orchestrator troubleshooting
Source: /v2/Orchestrators/guides/monitoring-and-tooling/troubleshooting Errors are grouped by category. Use the index below to jump straight to what you are seeing, or read through the category that matches your situation. Common external checks used throughout this page:- H.264 levels reference: Wikipedia AVC levels
- NVIDIA GPU support matrix: NVIDIA video encode/decode support matrix
- Arbiscan: Arbiscan.io
- Explorer Orchestrator list: explorer.livepeer.org/Orchestrators
- Cloud SPE AI registry: tools.Livepeer.cloud
- Ollama version endpoint:
http://localhost:11434/api/version - Example local and public service URIs:
https://127.0.0.1:4433,https://121.5.10.8:8935,https://121.5.10.8:8935;,https://<your-service-uri>:8935/status,https://orch.yourdomain.com:8935
Transcoding errors
OrchestratorCapped - node not accepting work
OrchestratorCapped - node not accepting work
- Check your current session count against your configured limit:
Check current session limit
- If you have spare GPU capacity, increase
-maxSessionsin your launch command - If you are already at GPU VRAM limits, you cannot safely increase sessions – you need to reduce the model size, reduce output dimensions, or add GPU capacity
- In a split setup, verify both the transcoder machine and the Orchestrator have capacity headroom
Transcode loop timed out / Segment loop timed out
Transcode loop timed out / Segment loop timed out
MB rate > Level limit warning
MB rate > Level limit warning
Unable to transcode errors
Unable to transcode errors
Unsupported input pixel format
Unsupported input pixel format
GPU and memory errors
Cannot allocate memory (on startup with -nvidia flag)
Cannot allocate memory (on startup with -nvidia flag)
- Check what is using NVENC sessions on the GPU:
nvidia-smi - Stop any processes consuming NVENC sessions (video encoding software, other Livepeer processes)
- If you need more concurrent sessions than your consumer GPU allows, look into driver patching (the
nvenc-patchapproach) or upgrade to a data centre class GPU (RTX A-series or above) which has no session cap
CUDA out of memory (AI inference)
CUDA out of memory (AI inference)
- Check current VRAM usage:
nvidia-smi --query-gpu=memory.used,memory.free --format=csv - Reduce the
capacityvalue in youraiModels.jsonfor the affected pipeline - If you have multiple warm models loaded, consider making some cold (remove from warm list) to free VRAM for others
- Check whether you have set dimensions in your inference requests that exceed what your VRAM can handle
Node not using GPU for transcoding despite -nvidia flag
Node not using GPU for transcoding despite -nvidia flag
-nvidia.Checklist:- Run
nvidia-smi– confirm the GPU is visible to the OS - Check go-livepeer startup logs for a GPU detection line
- Verify
LD_LIBRARY_PATHincludes CUDA shared libraries if not installed to/usr/local/cuda - Confirm NVIDIA Container Toolkit is installed if you are running in Docker:
docker run --gpus all nvidia/cuda:11.0-base nvidia-smi
go-livepeer/doc/gpu.md: if the CUDA location differs from /usr/local/cuda, set LD_LIBRARY_PATH=<path-to-cuda> when launching.Reward and gas errors
insufficient funds for gas * price + value
insufficient funds for gas * price + value
- Check your Orchestrator wallet ETH balance on Arbiscan – bridge or transfer ETH to it on Arbitrum One
- As a preventive measure, keep at least 0.02–0.05 ETH in your Orchestrator wallet at all times
- If you are using OrchestratorSiphon, configure
eth_warnandeth_minvalthresholds to receive warnings before the wallet goes dry
Node still calling reward despite -reward=false
Node still calling reward despite -reward=false
-reward=false but your node is still submitting reward transactions and spending gas.Why this happens: If you are running the Orchestrator and transcoder as separate processes (split setup), -reward=false must be set in every launch command. A transcoder process running with the same Ethereum wallet and a separate config may be calling reward independently.How to fix it:- Audit all running
livepeerprocesses:ps aux | grep livepeer - Add
-reward=falseto every launch command - As an extra precaution, remove the
-ethUrloption from any transcoder process that shares the same wallet. Without an ETH URL, the transcoder cannot submit on-chain transactions at all. - When using a
.conffile for configuration, the command-line flag overrides the file. Always pass-reward=falseexplicitly at launch.
Missing reward rounds despite -reward=true
Missing reward rounds despite -reward=true
-reward=false, but the Explorer shows missed rounds.Diagnose in order:- ETH balance – low balance causes reward calls to fail silently. Check
http://localhost:7935/statusfor ETH balance or look at Arbiscan. - Node was offline – a node down at the round boundary (~every 22 hours on Arbitrum) misses the call. Check your systemd or service uptime logs.
- Multiple processes competing – two go-livepeer processes sharing the same wallet can submit a failing duplicate.
TicketParams expired
TicketParams expired
AI Runner errors
AI runner container not starting
AI runner container not starting
Wrong model ID - model fails to load
Wrong model ID - model fails to load
aiModels.json does not resolve to a valid model.Model IDs are case-sensitive and must include the organisation prefix. For example:- ✓
stabilityai/stable-diffusion-xl-base-1.0 - ✗
stable-diffusion-xl-base-1.0(missing org prefix) - ✗
StabilityAI/stable-diffusion-xl-base-1.0(wrong case)
llama3:8b) in aiModels.json. Use the HuggingFace model ID format instead.AI pipeline registered but receiving no jobs
AI pipeline registered but receiving no jobs
- Outside the Active Set – check Livepeer Explorer. Nodes outside the top 100 by stake receive no transcoding or AI jobs.
- Price too high – your per-capability price exceeds the Gateway’s
-maxPricePerCapabilitylimit. Check market rates on tools.Livepeer.cloud and compare with other operators. - Model is cold – the warm model is not loaded in VRAM. Jobs may time out before the model loads, and cold starts often take 30 to 120 seconds. Make sure your intended warm model is listed in the
warmsection ofaiModels.json. - Capability not registered – query your node’s registered capabilities:
curl http://localhost:7935/getNetworkCapabilities | jq. If the pipeline is missing, check youraiModels.jsonconfiguration and that the AI Runner started successfully.
OOM during AI inference (job starts, then fails)
OOM during AI inference (job starts, then fails)
- Reduce the
capacityvalue for the pipeline inaiModels.json - Reduce
maxSessionsfor AI inference specifically - If the OOM happens for large output requests but not small ones, consider whether you need to restrict accepted request dimensions at the Gateway level
ComfyStream container failing (live-video AI)
ComfyStream container failing (live-video AI)
- Model weights are downloaded and accessible at the path configured in your ComfyStream setup
- CUDA toolkit version matches what the container expects – check
nvidia-smifor your driver version and confirm container CUDA compatibility - The container has sufficient VRAM for the workflow – live-video streaming requires the model to remain resident during the stream
- Check container logs for the specific Python exception:
docker logs -f <comfystream-container>
LLM pipeline (Ollama) not receiving jobs
LLM pipeline (Ollama) not receiving jobs
- Verify Ollama container is running and accessible:
curl http://localhost:11434/api/version - Confirm go-livepeer can reach the Ollama endpoint. Containerised deployments usually need both services on the same Docker network.
- Re-register the LLM capability: restart go-livepeer to force capability re-advertisement
- Check that the model ID in
aiModels.jsonmatches an installed Ollama model:ollama list
Networking and connectivity
Service address mismatch warning at startup
Service address mismatch warning at startup
- If your IP changed: update your on-chain service URI using
livepeer_cli - If your IP is correct but different from what the node auto-detects: override with
-serviceAddr <public-ip>:8935 - Confirm your node is actually reachable at that address:
curl -v https://<your-service-uri>:8935/status
Node not receiving any jobs despite being in active set
Node not receiving any jobs despite being in active set
Running behind a NAT or home router
Running behind a NAT or home router
- Port forwarding – forward port 8935 on your router to your node’s local IP. This is the standard approach.
- DMZ – place your node in the router’s DMZ to receive all unsolicited inbound traffic. Less secure but simpler.
-
Hairpinning (if needed) – some networks require iptables rules to handle internal-to-external traffic loops:
Example hairpinning rule
What is the service URI - can it be a hostname?
What is the service URI - can it be a hostname?
- IP address:
https://121.5.10.8:8935– static IPs are preferred for consistency - DNS name:
https://orch.yourdomain.com:8935– allowed and recommended if you want flexibility to change the underlying IP without an on-chain transaction
livepeer_cli. Use DNS if you anticipate IP changes.Account and keystore errors
Error creating Ethereum account manager
Error creating Ethereum account manager
~/.lpData/arbitrum-one-mainnet/keystore/How to fix it:- List files in your keystore directory:
ls -la ~/.lpData/<network>/keystore/ - Confirm the file matching your
-ethAcctAddris present (UTC— prefixed JSON file) - Check file permissions – the keystore file should be readable by the user running go-livepeer:
chmod 600 <keystore-file> - If you used a different
-datadirin the past, the keystore may be under a different path. Locate it and copy it to the correct location.