llm_port_node_agent
llm_port_node_agent is the host-side execution bridge for llm-port node clusters.
It does not perform cluster scheduling. The backend remains authoritative for:
- desired state
- placement and routing policy
- GPU-aware filtering and load-balancing
The agent responsibilities are:
- enroll with one-time token
- maintain authenticated outbound stream
- execute node commands (Docker runtime lifecycle)
- report heartbeat, inventory, command timeline, and events
Quick Start
- Create token in backend admin:
POST /api/admin/system/nodes/enrollment-tokens
- Set environment variables on node host:
LLM_PORT_NODE_AGENT_BACKEND_URLLLM_PORT_NODE_AGENT_ENROLLMENT_TOKENLLM_PORT_NODE_AGENT_AGENT_IDLLM_PORT_NODE_AGENT_HOST
- Start service:
llmport-agent(foreground, for testing)llmport-agent start(install as systemd service)
Commands
| Command | Description |
|---|---|
llmport-agent |
Run in foreground (test connectivity, Ctrl+C to stop) |
llmport-agent start |
Install and start as a systemd service (picks up LLM_PORT_NODE_AGENT_* env vars) |
llmport-agent stop |
Stop and disable the systemd service |
llmport-agent status |
Show systemd service status |
Environment Variables
LLM_PORT_NODE_AGENT_BACKEND_URLdefaulthttp://127.0.0.1:8000LLM_PORT_NODE_AGENT_AGENT_IDdefaulthostnameLLM_PORT_NODE_AGENT_HOSTdefaulthostnameLLM_PORT_NODE_AGENT_ADVERTISE_HOSTdefaultLLM_PORT_NODE_AGENT_HOSTLLM_PORT_NODE_AGENT_ADVERTISE_SCHEMEdefaulthttp(allowed:http,https)LLM_PORT_NODE_AGENT_ENROLLMENT_TOKENone-time token for initial enrollmentLLM_PORT_NODE_AGENT_STATE_PATHdefault/var/lib/llmport-agent/state.jsonLLM_PORT_NODE_AGENT_HEARTBEAT_INTERVAL_SECdefault15LLM_PORT_NODE_AGENT_INVENTORY_INTERVAL_SECdefault60LLM_PORT_NODE_AGENT_RECONNECT_MIN_SECdefault2LLM_PORT_NODE_AGENT_RECONNECT_MAX_SECdefault30LLM_PORT_NODE_AGENT_REQUEST_TIMEOUT_SECdefault20LLM_PORT_NODE_AGENT_VERIFY_TLSdefaulttrueLLM_PORT_NODE_AGENT_LOKI_URLLoki push endpoint (e.g.http://10.0.0.1:3100). When set, the agent collects system logs (journald on Linux, Event Log on Windows) and pushes them to Loki with labels{job="node-agent", host="<hostname>", level="..."}.LLM_PORT_NODE_AGENT_LOG_BATCH_SIZEdefault100— max log lines per collection cycleLLM_PORT_NODE_AGENT_LOG_FLUSH_INTERVAL_SECdefault5— seconds between log collection cycles
Binary Installation (no Python required)
Pre-built standalone binaries are available on the GitHub Releases page for Linux (x86_64), Windows (x86_64), and macOS (universal).
Linux
curl -fLO https://github.com/llm-port/llm-port-node-agent/releases/latest/download/llmport-agent-linux-x86_64
sudo install -m 0755 llmport-agent-linux-x86_64 /usr/local/bin/llmport-agent
Then install the systemd service (see below) or run directly:
export LLM_PORT_NODE_AGENT_BACKEND_URL=http://your-backend:8000
export LLM_PORT_NODE_AGENT_ENROLLMENT_TOKEN=tok_xxx
# Test connectivity first (foreground, Ctrl+C to stop)
llmport-agent
# Once working, install as a service
llmport-agent start
Windows
Download llmport-agent-windows-x86_64.exe from the releases page and run:
$env:LLM_PORT_NODE_AGENT_BACKEND_URL = "http://your-backend:8000"
$env:LLM_PORT_NODE_AGENT_ENROLLMENT_TOKEN = "tok_xxx"
.\llmport-agent-windows-x86_64.exe
macOS
curl -fLO https://github.com/llm-port/llm-port-node-agent/releases/latest/download/llmport-agent-macos-universal
chmod +x llmport-agent-macos-universal
export LLM_PORT_NODE_AGENT_BACKEND_URL=http://your-backend:8000
export LLM_PORT_NODE_AGENT_ENROLLMENT_TOKEN=tok_xxx
./llmport-agent-macos-universal
Via CLI
llmport node agent deploy --backend-url http://your-backend:8000
The CLI auto-detects pre-built binaries in the workspace dist/ directories and
uses them instead of cloning + setting up a Python venv.
Systemd
A unit file template is available at:
deploy/systemd/llmport-agent.service
Release files for llmport-agent 0.1.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| llmport_agent-0.1.13.tar.gz | 661.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llmport_agent-0.1.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 838.1 kB
Release files / llmport_agent-0.1.13.tar.gz
| Download URL | llmport_agent-0.1.13.tar.gz |
|---|---|
| Size | 661.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
19718ac6fee9c1ab03266ee512fac4ef7bef9cc0385d0d84b7c5d5837d4d5fcd
|
|
BLAKE2b-256 checksum How to use checksums |
b3326f72e88387b0c185c891a429cd5be788e6fb36e325f1282c1eebf74c36ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / llmport_agent-0.1.13-py3-none-any.whl
| Download URL | llmport_agent-0.1.13-py3-none-any.whl |
|---|---|
| Size | 176.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f989e7a5c065ce215952abc2903b636ea4c532d2cc00609f7f3ba86ecefa894e
|
|
BLAKE2b-256 checksum How to use checksums |
2e0ce600f123e0a2da6722364189da74a2c0861389d6f372b79d3b1fb9124467
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|