-
Notifications
You must be signed in to change notification settings - Fork 4
Roadmap
The goal of Cmd.io is to find a stable, "done" state. No easy task for software. We do this by keeping the scope small. But to make it a powerful building block, a lot of features are geared towards new ways to interface with the core functionality.
Initially an HTTP endpoint with optional streaming to run commands and get the output over HTTP. That means you can use curl
when SSH is not available. It also means you can start using your commands as a sort of API endpoint, making them easier to integrate in other systems. Use them as webhook handlers.
Basic command management UI, but also being able to run commands in a virtual terminal from the browser.
Optionally have commands come with their own Docker Engine instance. It would also be stateless, but allows you to perform Docker operations from your command, like builds and pushes, but also use or run programs in Docker for the duration of the command.
Command namespace dedicated to a group, shared by multiple users. Great for teams.
Give access to non-GitHub users for automation purposes using tokens. Tokens can be used via HTTP or SSH (without SSH key).
- Client that uploads current directory to command automatically -nate
- Add your items here!
This includes daemons and long-lived commands such as shells. Processes running indefinitely are certainly out of scope. Long-lived processes could be allowed in time and with thought. Mainly this is to reduce complexity and product focus, but there are resource utilization issues. Policy will be in place to terminate processes after a timeout to be determined.
Especially with an HTTP interface it's plausible to use Cmd.io for certain kinds of web processing. Webhook handling comes to mind. However, it's not intended to host web applications or high frequency HTTP requests. Policy will be in place to rate limit commands.
Shared filesystem and other persistent datastores introduce scaling complexity and operational overhead unnecessary for this product. When necessary, 3rd party datastores should be used.
No ports are exposed to the Internet since servers fall under long running processes. In the rare case incoming connections are needed for non-daemons, using a utility such as Ngrok is suggested.