Python SDK for CMDOP agent interaction
Project description
CMDOP
Your OS. Online.
Full access to your machines from anywhere. Not files — the whole system.
Your Code ──── Cloud Relay ──── Agent (on server)
│
Outbound only, works through any NAT/firewall
Install
pip install cmdop
Quick Start
from cmdop import AsyncCMDOPClient
async with AsyncCMDOPClient.remote(api_key="cmdop_xxx") as client:
# Terminal
await client.terminal.set_machine("my-server")
output, code = await client.terminal.execute("uname -a")
# Files
content = await client.files.read("/etc/hostname")
await client.files.write("/tmp/config.json", b'{"key": "value"}')
# AI Agent with typed output
from pydantic import BaseModel
class Health(BaseModel):
cpu: float
memory: float
issues: list[str]
await client.agent.set_machine("my-server")
result = await client.agent.run("Check server health", output_model=Health)
health: Health = result.data # Typed!
# Skills — run predefined AI workflows
await client.skills.set_machine("my-server")
skills = await client.skills.list()
result = await client.skills.run("code-review", "Review the auth module")
Connection
from cmdop import CMDOPClient, AsyncCMDOPClient
# Remote (via cloud relay) - works through any NAT
client = CMDOPClient.remote(api_key="cmdop_xxx")
# Local (direct IPC to running agent)
client = CMDOPClient.local()
# Async
async with AsyncCMDOPClient.remote(api_key="cmdop_xxx") as client:
...
Documentation
| Topic | Description |
|---|---|
| Terminal | Execute commands, stream output, SSH sessions |
| Auth | Agent password authentication, session tokens |
| Files | Read, write, list files on remote machines |
| Agent | AI tasks with structured typed output |
| Skills | Predefined AI workflows with tool access |
| Download | Download files from URLs via remote server |
| SDKBaseModel | Auto-cleaning Pydantic model for scraped data |
Architecture
┌─────────────┐ gRPC/HTTP2 ┌─────────────┐ gRPC ┌─────────┐
│ Python │◀────────────────▶│ Cloud │◀──────────▶│ Agent │
│ SDK │ Bidirectional │ Relay │ Outbound │ (Go) │
└─────────────┘ └─────────────┘ └─────────┘
- Agent makes outbound connection (no port forwarding)
- SDK connects via gRPC (works through any firewall)
- All services multiplexed over single connection
Comparison
| Feature | CMDOP | Tailscale | ngrok | SSH |
|---|---|---|---|---|
| Terminal streaming | gRPC | VPN + SSH | No | Yes |
| File operations | Built-in | SFTP | No | SCP |
| AI agent | Built-in | No | No | No |
| Reusable AI skills | Built-in | No | No | No |
| NAT traversal | Outbound | WireGuard | Outbound | Port forward |
| Client install | None | VPN client | None | SSH client |
| Structured output | Pydantic | No | No | No |
Requirements
- Python 3.10+
- CMDOP agent running locally or API key for remote access
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cmdop-2026.3.18.tar.gz
(206.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
cmdop-2026.3.18-py3-none-any.whl
(344.8 kB
view details)
File details
Details for the file cmdop-2026.3.18.tar.gz.
File metadata
- Download URL: cmdop-2026.3.18.tar.gz
- Upload date:
- Size: 206.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11f52d01ad0f5ec0299e7e3e8fd7cff2bb014243d28e321e55ce6b5680b92efd
|
|
| MD5 |
099f521ca8f2c69dd4f8bbce0710ba17
|
|
| BLAKE2b-256 |
f1b8e3844b418c7e476ad543468fc327e29cadda5a5f83534ae000a96fe8318c
|
File details
Details for the file cmdop-2026.3.18-py3-none-any.whl.
File metadata
- Download URL: cmdop-2026.3.18-py3-none-any.whl
- Upload date:
- Size: 344.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15612cf3f1ad6acb2c6ce1670794d0315abb420f9131b0754a5c9b086d160196
|
|
| MD5 |
1e38d8f16d17f107c4eaeec5761d9031
|
|
| BLAKE2b-256 |
4543174c39cf08067877175789a204c21c1f526c80e734c45f9a47cdc8beb434
|