~/work/managecommand-django-management-commands-without-ssh.md
Case study

ManageCommand – Django Management Commands Without SSH

My own SaaS: a web dashboard that lets Django teams run, schedule, and audit management commands in production without SSH, cron-with-no-visibility, or standing up Celery just to trigger one command.

role
Solo — product, runner package, dashboard, landing, pricing, docs, GTM
product
managecommand.com · live
sector
Developer tooling · SaaS · Django ecosystem
stack
Django · Docker · DigitalOcean · FastSpring · PyPI client
status
● in production
01 / Problem

Running one command shouldn't require SSH

Django management commands are one of the more powerful parts of the framework, but running them in production usually means one of three bad options: SSH into a box, set up a cron with no visibility into what actually happened, or stand up Celery infrastructure just to trigger a command or two. Each option has its own blast radius; none of them fit a team that wants non-developers to trigger routine jobs safely.

ManageCommand replaces all of that with a pip install and a single line in settings.py.

02 / Architecture

An outbound-only runner and a hosted dashboard

diagram · data flowdjango app · runner · dashboard · team
your infrastructure · no inbound ports managecommand.com · hosted django app your project runner pip package · poll allowlist · runs as the same OS user only allowlisted commands can execute dashboard trigger · schedule audit log who · when · output team developers · ops · non-technical staff
runner opens outbound HTTPS only · no inbound ports exposed · every execution flows through the hosted audit log

Runner. An open-source Python package published on PyPI that drops into your Django project. It discovers your available management commands, syncs them to the dashboard, and long-polls for executions to run.

Dashboard. The hosted web application where your team triggers commands, sets up schedules, and reviews execution history — with who ran what, when, with which arguments, and the full output.

The runner never accepts inbound connections. The only network edge is HTTPS out to managecommand.com — so there is nothing to firewall, NAT, or expose.
03 / Security model

Allowlists, not a remote shell

Security was the primary design constraint, not a feature checkbox.

surfacecovers
network outbound HTTPS only · no open ports · no public endpoints on your side
execution only explicitly allowlisted commands · no arbitrary code · no remote shell
identity commands run as the same OS user they already do in your deployment
audit every run logged with user, time, arguments, output, and result
04 / Ownership

0 → 1, solo

I designed and built the whole thing end to end: the runner package, the dashboard application, the landing page, pricing, documentation, security model, and the go-to-market. Live at managecommand.com.

05 / Tech stack

Tools

  • Django
  • Docker
  • DigitalOcean
  • FastSpring
  • PyPI (client package)
~/work
01 / 01 navigate · Esc close