The Problem
Deploying internal tools shouldn’t mean wrestling with a dozen dashboards, hand-crafting YAML, or babysitting a cluster just to push a simple web app. Most "easy" deployment platforms turn into a mess of manual CLI commands, clicky UIs, and config drift. If you’ve ever tried to keep a small fleet of internal apps running and up-to-date—without going full DevOps—you know the pain.
What This Does
openrun lets you deploy web apps declaratively, without the usual yak shaving. You write config, commit to Git, and OpenRun takes care of the rest. The brains live in cmd/openrun/—so if you want to see how commands like apply or sync actually work, check out files like applycmd.go and synccmds.go. There’s no hidden magic: every operation is tied to a real command and a config file.
Deployment works both on a single node (via Docker/Podman) or Kubernetes, and you don’t have to change your config to switch between them. Features like blue-green deploys, staged rollouts, and scaling apps to zero are baked in. RBAC, OAuth/OIDC/SAML, and TLS? Handled out of the box. The Makefile and deploy/Dockerfile are there if you want to build or containerize the whole thing yourself.
Real-World Use
Say you’ve got a handful of internal Flask apps. You add an app spec file to your repo, push, and OpenRun does the rest—no fiddling with manual docker run commands or Helm charts. Updates? Change the config, commit, and OpenRun atomically rolls out the change. Want to add staging before prod? That’s a config tweak. Need SSO? Just configure it and let OpenRun handle the ugly details. Here’s a basic workflow:
Add new app config
git add myapp.yaml git commit -m "Add internal dashboard" git push
OpenRun picks it up, deploys, manages TLS, and sets up RBAC openrun apply
The Bottom Line
OpenRun is legit if you want hands-off, Git-driven deployments for internal tools without building your own platform. It’s probably overkill for one-off side projects, but perfect for teams sick of manual deploys and config drift. If you’re allergic to endless YAML and love declarative workflows, give it a shot.