MyCTL is a CLI tool built on a Lean Client / Fat Server architecture. A tiny Go binary proxies all commands to a persistent Python daemon, enabling zero-latency CLI response times, deep system integration, and a self-bootstrapping plugin ecosystem.
myctl <command> → client Proxy → Unix Socket (IPC) → Python Daemon
(thin) (smart server)
- Go Client (
cmd/): Fetches the command schema from the daemon at runtime and builds a Cobra CLI tree dynamically. - Python Daemon (
daemon/): Handles N-level command routing, plugin discovery, and native system integrations (PulseAudio, DBus). - Plugins (
plugins/,~/.local/share/myctl/plugins/): Self-contained Python packages declared viapyproject.toml.
Prerequisites: mise, go, python 3.14+, uv
git clone https://github.com/mydehq/myctl && cd myctl
# Install toolchain
mise install
# Build & install
mise run buildThe compiled binary is placed at bin/myctl. Add it to your $PATH.
# Start the daemon (auto-started on first command)
myctl daemon start
# Run any command
myctl <plugin> <command> [args]
# Get help
myctl --help
myctl <plugin> --helpPlugins are self-contained Python packages. Drop a folder into ~/.local/share/myctl/plugins/:
myplugin/
├── pyproject.toml # manifest ([project] + [tool.myctl])
└── main.py # registration via Plugin() + decorators
Plugin IDs come from the folder name, and main.py stays registration-only.
See the Plugin SDK Guide for the full reference.
The full technical documentation is available at the MyCTL Developer Portal:
- Architecture Overview
- IPC Protocol Specification
- Plugin Discovery Engine
- Plugin SDK Guide
- Server API Reference
- MyDE: mydehq/MyDE
Made with ❤️ by the MyDE Team