Skip to content

Agent Protocol

Base URL: https://api.moenet.work

The Agent API is used by moenet-agent instances running on each node to communicate with the Control Plane.

Authentication

Agent endpoints use a per-node API token:

bash
Authorization: Bearer <agent-token>

Endpoints

GET /agent/:router/sessions

Fetch all BGP sessions assigned to this node.

bash
curl -H "Authorization: Bearer $AGENT_TOKEN" \
  https://api.moenet.work/agent/jp1/sessions

The agent polls this endpoint periodically (default: 60s) and applies any pending changes.

GET /agent/:router/bird-config

Fetch BIRD policy and community configuration for this node.

bash
curl -H "Authorization: Bearer $AGENT_TOKEN" \
  https://api.moenet.work/agent/jp1/bird-config

GET /agent/:router/mesh

Fetch mesh IGP peer list for WireGuard mesh setup.

bash
curl -H "Authorization: Bearer $AGENT_TOKEN" \
  https://api.moenet.work/agent/jp1/mesh

GET /agent/:router/config

Fetch full bootstrap configuration (used on first startup).

bash
curl -H "Authorization: Bearer $AGENT_TOKEN" \
  https://api.moenet.work/agent/jp1/config

POST /agent/:router/heartbeat

Report agent health status.

bash
curl -X POST https://api.moenet.work/agent/jp1/heartbeat \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "version": "2.0.0",
    "uptime": 3600,
    "meshPublicKey": "..."
  }'

POST /agent/:router/report

Report session metrics (RTT, route counts, traffic stats).

bash
curl -X POST https://api.moenet.work/agent/jp1/report \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "sessions": [
      {
        "uuid": "session-uuid",
        "rtt": 12.5,
        "rxBytes": 1024000,
        "txBytes": 512000,
        "routesImported": 42
      }
    ]
  }'

POST /agent/:router/modify

Update session status after configuration changes.

bash
curl -X POST https://api.moenet.work/agent/jp1/modify \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "uuid": "session-uuid",
    "status": 1,
    "interface": "wg_24001"
  }'

POST /agent/:router/mesh/status

Report mesh peer status.

Communication Flow

Health & Metrics

GET /health

bash
curl https://api.moenet.work/health
# {"status": "ok"}

GET /metrics

Returns Prometheus-format metrics.

bash
curl https://api.moenet.work/metrics

Rate Limits

RouteLimit
/agent/*300 requests/min

MoeNet DN42 Network — AS4242420998