A local test cockpit for ConnectOnion agents.
Click toolkits to build an agent · scan its QR from the iOS app · watch live logs
Install
pipx install connectonion-studio # or: pip install connectonion-studio
co-studio # opens http://127.0.0.1:9900
That's it. The first launch auto-creates your identity and activates your managed model key (needs internet — it's your own key, one per user). Offline on first run? Just run co auth once you're back online.
Desktop app (macOS)
A native macOS app (SwiftUI + WKWebView) lives in macos/ — the same cockpit in a real window with the traffic-light chrome and app icon. Build and run it from Xcode (macos/ConnectOnionStudio/); a signed .dmg for one-click install is on the way.
What it does
| 🧩 Create | Form: name · model · toolkit checkboxes → identity + QR ready instantly |
| ▶️ Run | One process per agent, health-polled every 5 s, live state over WebSocket |
| 📱 QR | Encodes connectonion://add?address&name&endpoint — one scan fills all three iOS "Add agent" fields (direct LAN endpoint, bypasses the relay) |
| 📜 Logs | Master–detail cockpit: per-agent live console (this run only), stat tiles, follow / errors-only, reveal-in-Finder |
| 🩺 Copy for Claude | Paste-ready markdown diagnostics bundle, one click |
| 🗑️ Delete | Two-step confirm, then a permanent delete — identity, keys, and logs are removed for good |
Toolkits: utility · web · files · shell (approval-gated) · image
Requirements
Python 3.11+ · macOS, Linux, or Windows (WSL recommended)
API reference
| Method | Path | Returns |
|---|---|---|
GET |
/api/agents |
{"agents": [AgentSummary]} |
POST |
/api/agents |
AgentDetail — body {name, model, toolkits, trust} |
GET |
/api/agents/{slug} |
AgentDetail |
POST |
/api/agents/{slug}/start · /stop · /restart |
{"state": …} |
POST |
/api/agents/{slug}/rename |
AgentSummary — body {name} |
DELETE |
/api/agents/{slug} |
204 (stops the agent, then permanently deletes it) |
GET |
/api/agents/{slug}/qr.svg |
SVG QR of the connectonion://add deep link (address · name · endpoint) |
POST |
/api/agents/{slug}/reveal-logs |
Opens the agent's runs/ folder in the OS file browser (local) |
GET |
/api/agents/{slug}/diagnostics |
Markdown bundle |
GET |
/api/setup/status |
Doctor checks |
GET |
/api/setup/update |
PyPI update check — {current, latest, update_available} |
WS |
/ws/status |
Status frames (each change + every 5 s) |
WS |
/ws/agents/{slug}/logs |
{"source": "stdout", "line": …} — the current run, from its first line |
Storage & internals
~/.co-studio/agents/<slug>/ meta.json · agent.py · .env · .co/ · runs/<timestamp>.log
- One stdout log per run under
runs/; the live console (and diagnostics) read only the current run. - Agent ports
8000–8099, allocated by socket probe (busy ports skipped, re-probed at start). agent.pyis standalone — eject it anywhere andpython agent.pystill works (the announce IP-trim patch is inlined).
Development (from source)
git clone https://github.com/EvanYifanYang/connectonion-studio && cd connectonion-studio
./install.sh
.venv/bin/co-studio
| Env | Effect |
|---|---|
CONNECTONION_PATH=~/repo/connectonion ./install.sh |
Install the framework from a local checkout instead of PyPI |
PYTHON=python3.12 ./install.sh |
Pick the interpreter |
Security
- The manager binds
127.0.0.1:9900only. - Agent ports are unauthenticated and exposed on your LAN by
host()— that is how the phone connects. Don't run on hostile networks.
Metadata
Release files for connectonion-studio 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| connectonion_studio-0.1.8.tar.gz | 294.0 kB | Without provenance | Details for connectonion_studio-0.1.8.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| connectonion_studio-0.1.8-py3-none-any.whl | Python 3 | none | any | Details for connectonion_studio-0.1.8-py3-none-any.whl |
Total release size: 597.0 kB
Release files / connectonion_studio-0.1.8.tar.gz
| Download URL | connectonion_studio-0.1.8.tar.gz |
|---|---|
| Size | 294.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1348f686d545551134cac3ff15e8b5ccc2643aa1c60c3191a7de9e13cba77d77
|
|
BLAKE2b-256 checksum How to use checksums |
857a18281722fb2bc2893a3cbbdb9f2a461cebb3681db2edbc8b9004c2925589
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / connectonion_studio-0.1.8-py3-none-any.whl
| Download URL | connectonion_studio-0.1.8-py3-none-any.whl |
|---|---|
| Size | 303.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
08dcd348740a378ad9d34ef79dc85b5804611138d87ee239ef0a82e04d683626
|
|
BLAKE2b-256 checksum How to use checksums |
7b52496fe40c386ee921d01bcd6901e18870f9f7dc38aa4e5af97dcd53a7da0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Security for connectonion-studio 0.1.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.