Interact with aria2 download manager via JSON-RPC 2.0. Manage downloads, query status, and control tasks through natural language commands. Use when working with aria2, download management, or torrent operations.
This skill enables you to control aria2 download manager through natural language commands:
⚠️ CRITICAL: DO NOT manually construct JSON-RPC requests.
✅ ALWAYS use the Python scripts in the scripts/ directory.
⚠️ IMPORTANT: Use python3 command, NOT python (especially on macOS where python symlink doesn't exist)
Step 1: Check Configuration Status
Before executing any aria2 commands, ALWAYS check if configuration is ready:
python3 scripts/config_loader.py test
Step 2: Initialize Configuration (if needed)
If connection test fails, guide user to set up configuration:
# Recommended: User config (survives skill updates)
python3 scripts/config_loader.py init --user
# Alternative: Local config (project-specific)
python3 scripts/config_loader.py init --local
Then instruct user to edit the generated config file with their aria2 server details.
Step 3: Execute User Commands
Once configuration is ready, execute the requested aria2 operations.
User: "download http://example.com/file.zip"
You execute:
# 1. Check configuration
python3 scripts/config_loader.py test
If test passes:
# 2. Execute download command
python3 scripts/rpc_client.py aria2.addUri '["http://example.com/file.zip"]'
You respond: "✓ Download started! GID: 2089b05ecca3d829"
If test fails:
Configuration not ready. Please initialize:
1. Run: python3 scripts/config_loader.py init --user
2. Edit ~/.config/aria2-skill/config.json with your aria2 server details
3. Run: python3 scripts/config_loader.py test (to verify)
For detailed execution instructions, see:
For aria2 method reference, see:
| User Intent | Command Example |
|---|---|
| Download a file | python3 scripts/rpc_client.py aria2.addUri '["http://example.com/file.zip"]' |
| Check status | python3 scripts/rpc_client.py aria2.tellStatus <GID> |
| List active downloads | python3 scripts/rpc_client.py aria2.tellActive |
| List stopped downloads | python3 scripts/rpc_client.py aria2.tellStopped 0 100 |
| Pause download | python3 scripts/rpc_client.py aria2.pause <GID> |
| Resume download | python3 scripts/rpc_client.py aria2.unpause <GID> |
| Show statistics | python3 scripts/rpc_client.py aria2.getGlobalStat |
| Show version | python3 scripts/rpc_client.py aria2.getVersion |
| Purge results | python3 scripts/rpc_client.py aria2.purgeDownloadResult |
For detailed usage and more commands, see execution-guide.md.
scripts/rpc_client.py - Main interface for RPC callsscripts/examples/list-downloads.py - Formatted download listscripts/examples/pause-all.py - Pause all downloadsscripts/examples/add-torrent.py - Add torrent downloadsscripts/examples/monitor-downloads.py - Real-time monitoringscripts/examples/set-options.py - Modify optionsScripts automatically load configuration from multiple sources with the following priority (highest to lowest):
Environment Variables (highest priority - temporary override)
ARIA2_RPC_HOST, ARIA2_RPC_PORT, ARIA2_RPC_PATH, etc.Skill Directory Config (project-specific configuration)
skills/aria2-json-rpc/config.jsonnpx skills add to update the skillUser Config Directory (global fallback, update-safe) 🆕
~/.config/aria2-skill/config.jsonnpx skills addDefaults (localhost:6800)
localhost)6800)null). Set to /jsonrpc for standard aria2, or custom path for reverse proxynull)false)30000)IMPORTANT: Always use Python scripts to manage configuration. Do NOT use shell commands directly.
Step 1: Check current configuration status
python3 scripts/config_loader.py show
Step 2: Initialize configuration if needed
User config (recommended - survives updates):
python3 scripts/config_loader.py init --user
Local config (project-specific):
python3 scripts/config_loader.py init --local
Step 3: Guide user to edit the config file
After initialization, the tool will display the config file path. Instruct user to edit it with their aria2 server details (host, port, secret, etc.).
Step 4: Verify configuration
python3 scripts/config_loader.py test
Example config file content:
{
"host": "localhost",
"port": 6800,
"secret": "your-secret-token",
"secure": false,
"timeout": 30000
}
Available Python scripts for configuration management:
# Check current configuration and source
python3 scripts/config_loader.py show
# Initialize user config (recommended - update-safe)
python3 scripts/config_loader.py init --user
# Initialize local config (project-specific)
python3 scripts/config_loader.py init --local
# Test connection to aria2 server
python3 scripts/config_loader.py test
Agent Workflow for Configuration Setup:
python3 scripts/config_loader.py showpython3 scripts/config_loader.py init --userpython3 scripts/config_loader.py testReverse Proxy Setup:
For reverse proxy setups like https://example.com:443/jsonrpc, the config file should contain:
{
"host": "example.com",
"port": 443,
"path": "/jsonrpc",
"secret": "your-secret-token",
"secure": true
}
Environment Variables (for reference only):
Configuration can also be overridden via environment variables:
ARIA2_RPC_HOST: HostnameARIA2_RPC_PORT: Port numberARIA2_RPC_PATH: URL pathARIA2_RPC_SECRET: Secret tokenARIA2_RPC_SECURE: "true" or "false"Note: Use Python scripts for configuration management. Environment variables are documented here for reference only.
python3 (not python)python3 scripts/config_loader.py test firstconfig_loader.py init, config_loader.py show, etc.