A lightweight daemon that connects to a control plane and executes AI agent tasks in your environment.
curl -fsSL https://cursord.com/install.sh | bash
cursord --name "my-daemon" --tools /path/to/tools.json
Or explicitly use the start command:
cursord start --name "my-daemon"
The control plane defaults to https://c.cursord.com. Override with:
cursord --control-plane https://your-control-plane.com --name "my-daemon"
Check version:
cursord version
| Flag | Description | Default |
|---|---|---|
--control-plane |
Control plane URL (required) | - |
--name |
Daemon display name | hostname |
--tools |
Path to tools configuration file (JSON) | - |
--workers |
Number of concurrent workers | 1 |
--workdir |
Base working directory for workers | /tmp/cursord |
| Variable | Description |
|---|---|
CURSORD_CONTROL_PLANE |
Control plane URL |
CURSORD_NAME |
Daemon display name |
CURSORD_TOOLS |
Path to tools.json |
CURSORD_WORKERS |
Number of concurrent workers |
CURSORD_WORKDIR |
Base working directory |
CURSORD_INSTALL_DIR |
Installation directory (installer only) |
CURSORD_BASE_URL |
Base URL for downloads (installer only) |
Tools are defined in a JSON file. Each tool has a name, description, parameters (JSON Schema), and a shell command template.
{
"tools": [
{
"name": "execute_sql",
"description": "Execute a SQL query",
"parameters": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "SQL query" }
},
"required": ["query"]
},
"command": "psql \"$DATABASE_URL\" --csv -c {{.query | shellquote}}",
"env": ["DATABASE_URL"],
"timeout": 30000
}
]
}
| Property | Description | Required |
|---|---|---|
name |
Tool identifier | Yes |
description |
What the tool does (shown to AI agent) | No |
parameters |
JSON Schema for tool parameters | No |
command |
Shell command template (Go text/template) | Yes |
env |
Required environment variables | No |
timeout |
Execution timeout in milliseconds | No (default: 30000) |
shellquote - Safely quotes values for shell use. Always use this for user input to prevent injection.
"command": "cat {{.filename | shellquote}}"
sudo systemctl status cursord # Check status sudo systemctl restart cursord # Restart daemon sudo journalctl -u cursord -f # Follow logs
launchctl list | grep cursord # Check if running tail -f ~/Library/Logs/cursord/cursord.log # Follow logs launchctl unload ~/Library/LaunchAgents/com.cursor.cursord.plist # Stop launchctl load ~/Library/LaunchAgents/com.cursor.cursord.plist # Start