/nodes/adminSummary: [Admin] Register New Node
Description: Admin registers a new Agent Node. Returns the node record including a generated invite_token that must be placed in the node's config YAML before deployment.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
admin_id |
query | Yes | string |
Required: Yes
application/jsonAgentNodeCreate (Define in Models)| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'POST' \
'http://localhost:8000/api/v1/nodes/admin?admin_id=<admin_id>' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{}'
/nodes/adminSummary: [Admin] List All Nodes
Description: Full node list for admin dashboard, including invite_token and skill config.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
admin_id |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \ 'http://localhost:8000/api/v1/nodes/admin?admin_id=<admin_id>' \ -H 'accept: application/json'
/nodes/admin/{node_id}Summary: [Admin] Get Node Detail
Description: [Admin] Get Node Detail
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
admin_id |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \
'http://localhost:8000/api/v1/nodes/admin/{node_id}?admin_id=<admin_id>' \
-H 'accept: application/json'
/nodes/admin/{node_id}Summary: [Admin] Update Node Config
Description: Update display_name, description, skill_config toggles, or is_active.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
admin_id |
query | Yes | string |
Required: Yes
application/jsonAgentNodeUpdate (Define in Models)| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'PATCH' \
'http://localhost:8000/api/v1/nodes/admin/{node_id}?admin_id=<admin_id>' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{}'
/nodes/admin/{node_id}Summary: [Admin] Deregister Node
Description: Delete a node registration and all its access grants.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
admin_id |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'DELETE' \
'http://localhost:8000/api/v1/nodes/admin/{node_id}?admin_id=<admin_id>' \
-H 'accept: application/json'
/nodes/admin/{node_id}/accessSummary: [Admin] Grant Group Access
Description: Grant a group access to use this node in sessions.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
admin_id |
query | Yes | string |
Required: Yes
application/jsonNodeAccessGrant (Define in Models)| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'POST' \
'http://localhost:8000/api/v1/nodes/admin/{node_id}/access?admin_id=<admin_id>' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{}'
/nodes/admin/{node_id}/access/{group_id}Summary: [Admin] Revoke Group Access
Description: [Admin] Revoke Group Access
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
group_id |
path | Yes | string | |
admin_id |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'DELETE' \
'http://localhost:8000/api/v1/nodes/admin/{node_id}/access/{group_id}?admin_id=<admin_id>' \
-H 'accept: application/json'
/nodes/admin/mesh/resetSummary: [Admin] Emergency Mesh Reset
Description: DANGEROUS: Clears ALL live node collections from memory and resets DB statuses to offline. Use this to resolve 'zombie' nodes or flapping connections.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
admin_id |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'POST' \ 'http://localhost:8000/api/v1/nodes/admin/mesh/reset?admin_id=<admin_id>' \ -H 'accept: application/json'
/nodes/Summary: List Accessible Nodes
Description: Returns nodes the calling user's group has access to. Merges live connection state from the in-memory registry.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
user_id |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \ 'http://localhost:8000/api/v1/nodes/?user_id=<user_id>' \ -H 'accept: application/json'
/nodes/{node_id}/statusSummary: Quick Node Online Check
Description: Quick Node Online Check
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
X-User-ID |
header | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \
'http://localhost:8000/api/v1/nodes/{node_id}/status' \
-H 'accept: application/json' \
-H 'X-User-ID: <your_user_id>'
/nodes/{node_id}/terminalSummary: Read Node Terminal History (AI Use Case)
Description: AI-Specific: Returns the most recent 150 terminal interaction chunks for a live node. This provides context for the AI reasoning agent.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
X-User-ID |
header | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \
'http://localhost:8000/api/v1/nodes/{node_id}/terminal' \
-H 'accept: application/json' \
-H 'X-User-ID: <your_user_id>'
/nodes/{node_id}/dispatchSummary: Dispatch Task to Node
Description: Queue a shell task to an online node. Emits task_assigned immediately so the live UI shows it.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
user_id |
query | Yes | string |
Required: Yes
application/jsonNodeDispatchRequest (Define in Models)| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'POST' \
'http://localhost:8000/api/v1/nodes/{node_id}/dispatch?user_id=<user_id>' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{}'
/nodes/{node_id}/cancelSummary: Cancel/Interrupt Task on Node
Description: Sends a TaskCancelRequest to the specified node. For shell skills, this typically translates to SIGINT (Ctrl+C).
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
task_id |
query | No | string | |
X-User-ID |
header | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'POST' \
'http://localhost:8000/api/v1/nodes/{node_id}/cancel?task_id=<task_id>' \
-H 'accept: application/json' \
-H 'X-User-ID: <your_user_id>'
/nodes/preferencesSummary: Update User Node Preferences
Description: Save the user's default_node_ids and data_source config into their preferences. The UI reads this to auto-attach nodes when a new session starts.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
user_id |
query | Yes | string |
Required: Yes
application/jsonUserNodePreferences (Define in Models)| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'PATCH' \
'http://localhost:8000/api/v1/nodes/preferences?user_id=<user_id>' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{}'
/nodes/preferencesSummary: Get User Node Preferences
Description: Get User Node Preferences
| Name | In | Required | Type | Description |
|---|---|---|---|---|
user_id |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \ 'http://localhost:8000/api/v1/nodes/preferences?user_id=<user_id>' \ -H 'accept: application/json'
/nodes/admin/{node_id}/config.yamlSummary: [Admin] Download Node Config YAML
Description: Generate and return the agent_config.yaml content an admin downloads and places alongside the node client software before deployment.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
admin_id |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \
'http://localhost:8000/api/v1/nodes/admin/{node_id}/config.yaml?admin_id=<admin_id>' \
-H 'accept: application/json'
/nodes/provision/{node_id}Summary: Headless Provisioning Script
Description: Returns a Python script that can be piped into python3 to automatically install and start the agent node.
Usage: curl -sSL https://.../provision/{node_id}?token={token} | python3
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
token |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \
'http://localhost:8000/api/v1/nodes/provision/{node_id}?token=<token>' \
-H 'accept: application/json'
/nodes/admin/{node_id}/downloadSummary: [Admin] Download Agent Node Bundle (ZIP)
Description: Bundles the entire Agent Node source code along with a pre-configured agent_config.yaml into a single ZIP file for the user to download.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
admin_id |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \
'http://localhost:8000/api/v1/nodes/admin/{node_id}/download?admin_id=<admin_id>' \
-H 'accept: application/json'
/nodes/validate-tokenSummary: [Internal] Validate Node Invite Token
Description: Internal HTTP endpoint called by the gRPC SyncConfiguration handler to validate an invite_token before accepting a node connection.
Returns the node's skill_config (sandbox policy) on success so the gRPC server can populate the SandboxPolicy response.
Response: 200 { valid: true, node_id, skill_config, display_name } 401 { valid: false, reason }
| Name | In | Required | Type | Description |
|---|---|---|---|---|
token |
query | Yes | string | |
node_id |
query | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'POST' \ 'http://localhost:8000/api/v1/nodes/validate-token?token=<token>&node_id=<node_id>' \ -H 'accept: application/json'
/nodes/{node_id}/fs/lsSummary: List Directory Content
Description: Request a directory listing from a node. Returns a tree-structured list for the File Navigator.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
path |
query | No | string | |
session_id |
query | No | string | |
X-User-ID |
header | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \
'http://localhost:8000/api/v1/nodes/{node_id}/fs/ls?path=<path>&session_id=<session_id>' \
-H 'accept: application/json' \
-H 'X-User-ID: <your_user_id>'
/nodes/{node_id}/fs/catSummary: Read File Content
Description: Read the content of a file on a remote node.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
path |
query | Yes | string | |
session_id |
query | No | string | |
X-User-ID |
header | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \
'http://localhost:8000/api/v1/nodes/{node_id}/fs/cat?path=<path>&session_id=<session_id>' \
-H 'accept: application/json' \
-H 'X-User-ID: <your_user_id>'
/nodes/{node_id}/fs/touchSummary: Create File or Directory
Description: Create a new file or directory on the node.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
X-User-ID |
header | Yes | string |
Required: Yes
application/jsonFileWriteRequest (Define in Models)| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'POST' \
'http://localhost:8000/api/v1/nodes/{node_id}/fs/touch' \
-H 'accept: application/json' \
-H 'X-User-ID: <your_user_id>' \
-H 'Content-Type: application/json' \
-d '{}'
/nodes/{node_id}/fs/downloadSummary: Download File
Description: Download a file from an agent node. Triggers a fetch to the hub's mirror, then serves it.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
path |
query | Yes | string | |
session_id |
query | No | string | |
X-User-ID |
header | Yes | string |
| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'GET' \
'http://localhost:8000/api/v1/nodes/{node_id}/fs/download?path=<path>&session_id=<session_id>' \
-H 'accept: application/json' \
-H 'X-User-ID: <your_user_id>'
/nodes/{node_id}/fs/uploadSummary: Upload File
Description: Upload a file to an agent node.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
path |
query | Yes | string | |
session_id |
query | No | string | |
X-User-ID |
header | Yes | string |
Required: Yes
multipart/form-dataBody_fs_upload_nodes__node_id__fs_upload_post (Define in Models)| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'POST' \
'http://localhost:8000/api/v1/nodes/{node_id}/fs/upload?path=<path>&session_id=<session_id>' \
-H 'accept: application/json' \
-H 'X-User-ID: <your_user_id>' \
-H 'Content-Type: multipart/form-data' \
-F 'file=@/path/to/file'
/nodes/{node_id}/fs/rmSummary: Delete File/Directory
Description: Delete a file or directory from a remote node.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
node_id |
path | Yes | string | |
X-User-ID |
header | Yes | string |
Required: Yes
application/jsonFileDeleteRequest (Define in Models)| Status Code | Description |
|---|---|
200 |
Successful Response |
422 |
Validation Error |
curl -X 'POST' \
'http://localhost:8000/api/v1/nodes/{node_id}/fs/rm' \
-H 'accept: application/json' \
-H 'X-User-ID: <your_user_id>' \
-H 'Content-Type: application/json' \
-d '{}'