Guided deploys & one-click rollback
Collect artifacts from a local build, S3 or Jenkins, lay out service folders, install and start. Every deploy is recorded with source, build, environment and result.
Control Panel deploys your builds, restarts your services, tails your logs, watches your uptime, load-tests your APIs and queries your databases — across Windows, Docker, Linux and Kubernetes. Run it as a hosted workspace, or install one binary on your own machine and stay entirely offline.
Free tier, no card Single binary, no agents Air-gapped installs supported
The tab problem
A deploy in Jenkins. Logs over SSH. Uptime in one SaaS, alerts in another. A JMeter install nobody maintains. DBeaver for the database, Postman for the API, and a wiki page explaining which PowerShell script to run on the Windows box.
Control Panel is one console over all of it — with the audit trail, the roles and the history that a stack of separate tools can never give you.
Six tabs, three credentials, one person who knows the runbook. No record of who restarted what.
One URL. Pick the environment, see every service, deploy build 2481, watch it go healthy, and read the audit line that says you did it.
What's inside
Everything a DevOps team runs day to day, in the product today — one binary, no plugins to buy.
Collect artifacts from a local build, S3 or Jenkins, lay out service folders, install and start. Every deploy is recorded with source, build, environment and result.
HTTP/TCP checks with persisted history, 24h/7d uptime, latency sparklines and an incident timeline — alerting Slack, Teams, PagerDuty, webhooks or email on down and recovery. A check that never reached the service is held apart from one that failed, and a whole outage arrives as one message.
Follow any number of services side by side in a split grid, with search and highlight across every pane at once and per-pane match counts.
A built-in HTTP engine with no JVM: stages, arrival rates and weighted scenarios, pass/fail criteria a
pipeline can gate on, a live dashboard, baselines and trends. JMeter .jmx still runs if you
have one.
PostgreSQL, MySQL, SQL Server, Oracle, SQLite, ClickHouse, Mongo, Cassandra, Redis, Elasticsearch, DynamoDB, Firestore, InfluxDB, Neo4j, Couchbase and SurrealDB — query, edit rows, import CSV and copy whole schemas between them.
Auth, every body mode, {{variables}}, pre-request and post-response scripts, saved
collections, OpenAPI/Postman import — and requests issued from inside the target environment.
Browse, edit inline, upload, rename, chmod over a pooled SSH connection — plus an admin-only audited shell to a host or into a container, in split panes that each say which environment they are in.
Deploy frequency, change-failure rate, MTTR from the incident timeline, and 30-day SLA per target — read from what actually happened, not a spreadsheet.
Four roles enforced server-side, narrowed per environment where you need it, OIDC single sign-on, and every login, command, file write and denied request appended as JSON lines with secrets redacted.
Compare branches, then review, approve and merge pull requests on GitHub, GitLab and Bitbucket from one dashboard — and open the same change in many repositories at once.
Encoders, a JWT decoder, image, icon, PDF (with Lock and Unlock), document and audio tools, and a multi-track Remix — all running in the browser, so nothing leaves the machine.
Ask about your environments and it answers from the panel's own endpoints, with your permissions and every lookup listed — off until an admin turns it on.
Deploy
Pick where the build comes from, pick the environment, pick the services. The panel does the folder layout, the install and the restart — then records what it did so the next person doesn't have to ask.
| When | Build | Source | By | Result |
|---|---|---|---|---|
| 12:04 | 2481 | jenkins #914 | admin | success |
| 09:38 | 2480 | s3://builds | ci-webhook | success |
| Tue | 2477 | local build | operator | rolled back |
| Mon | 2476 | jenkins #908 | admin | success |
Monitor
Point a check at an HTTP endpoint or a TCP port and the panel keeps its history — uptime percentages, latency over time, and an incident timeline you can hand to a post-mortem.
/metrics so an existing Grafana stack sees the same numbers.| Target | 24h | 7d | Latency | |
|---|---|---|---|---|
| api.prod | 100% | 99.98% | 118ms | |
| checkout.prod | 99.9% | 99.91% | 204ms | |
| billing.prod | 97.2% | 99.40% | 1.9s |
Operate
Tail four services at once and search across all of them. Edit a config file in place. Drop into an
audited shell on the host, or straight into a container with docker exec.
chmod.Environments
Agentless server management: no agent is installed on a managed host — the panel connects out over SSH, WinRM or kubectl. Define environments once in config or in the UI; everything else in the panel follows the one you have selected.
Local machine or remote over WinRM, with RDP for interactive sessions. Scheduled-task services driven by the panel's own Go code — no helper scripts to keep on disk.
Remote hosts over SSH — direct, or through a bastion / jump host. Container operations run as named server-side actions.
Driven with kubectl from a jump host, a master node or the panel itself. Services are
Deployments; stop and start scale to zero and back to the previous replica count.
On the machine the panel runs on: disk cleanup by category, photo, video and contact import from an iPhone or Android — audited, sync-style — and desktop recording to MP4.
Two ways to run it
The same console either way. The difference is who holds the machine.
Sign up, get a workspace, add your first environment in minutes. We run the server, keep it patched and back it up. Your workspace's configuration is isolated in its own tenant.
A per-user .msi, a .dmg, a container image, a Helm chart or a systemd unit.
The UI is embedded in the executable — copy one file anywhere and run it.
Pricing
Per-user for the hosted workspace, per-install for a self-hosted licence. No per-host metering, no charge for the environments you monitor.
cpctlSelf-hosting instead? Licences start at $149 per install per year — see self-hosted pricing
Trust
This console executes commands against your hosts. That is the product — so the controls around it are the first thing we build, not the last.
Questions
No. The panel connects out over SSH (with a pooled, persistent connection) or WinRM,
and drives Kubernetes with kubectl. There is nothing to deploy on the machines you manage.
Yes — it is the same software. Settings can be exported and cloned into another install, so a workspace can become a self-hosted panel or the other way round. Host-level features (shell, filesystem, disk cleanup) only light up in a self-hosted install.
It stops serving the console and shows the activation screen; nothing is deleted, and
your config/ and history stay on disk. Renew and it picks up where it left off. Verification is
offline, so a licence that is still valid keeps working even with no route to the internet — forever.
Yes. The activation screen shows a machine ID that carries no hostname or MAC address; send it to us and we issue a token already bound to that machine. It then verifies with no network at all.
Only for managing Windows targets, which the panel drives over WinRM. Docker, Linux and Kubernetes environments are Linux-native and run happily from the container image or a systemd unit.
Each of those does one part well. Control Panel is the operator's whole loop in one place — deploy, restart, tail, monitor, alert, load-test, query the database and record who did it — over mixed Windows/Docker/Kubernetes estates, where most tools pick a side.
Create a free hosted workspace with no card, or download the installer and press Start my 30 free days on its activation screen — the self-hosted trial issues itself, no sales call. Both run the full console; the free workspace is limited by size, not by feature.
Still deciding? Ask us anything — a real engineer answers.
A single pane of glass for Windows, Docker, Linux and Kubernetes. Free to start, 14-day trial on the paid plans, and a self-hosted licence when your network says the data stays home.
docker compose build && docker compose up -d