Skip to content

Roadmap

Jeff Lindsay edited this page Nov 2, 2016 · 5 revisions

Feature 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.

HTTP interface

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.

Web UI

Basic command management UI, but also being able to run commands in a virtual terminal from the browser.

Builtin Docker

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.

Groups (or Organizations)

Command namespace dedicated to a group, shared by multiple users. Great for teams.

Access Tokens for Automation

Give access to non-GitHub users for automation purposes using tokens. Tokens can be used via HTTP or SSH (without SSH key).

Feature Requests

  • Client that uploads current directory to command automatically -nate
  • Add your items here!

Community Roadmap

Source Release, User Deploys

Open Invite Beta

Operations Console

Out of Scope

Long running processes

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.

High traffic web endpoints

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.

Storage beyond configuration

Shared filesystem and other persistent datastores introduce scaling complexity and operational overhead unnecessary for this product. When necessary, 3rd party datastores should be used.

Incoming network connections

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.