The Shipherd logo

2025-aug-04 • updated 2026-feb-16

Shipherd: Dynamic Code Runner

How I created Shipherd, a platform to run code dynamically.

Technologies: Node.js, React, Docker

Why I Built Shipherd

I built Shipherd because I was tired of doing the same ops chores for tiny projects over and over again.


At the time, I had a personal dashboard running on an OrangePi that genuinely helped me stay on top of daily life. But each small change turned into a deployment ritual: code, commit, push, SSH, cd, pull, restart, and then hope it stayed alive. If something crashed quietly, I often discovered it days later.


That same pattern kept repeating with everything else I hosted: bots, scripts, and small services. I didn't need enterprise infrastructure for these projects, but I did need reliability. I wanted something that felt like self-hosting, but with an assistant.

What Shipherd Is

Shipherd is a free, open-source platform to run and monitor code on your own server.


The core idea is simple: connect code, run it, and let Shipherd handle the boring parts. It automates common tasks like:


  • Pulling updates from Git providers (including self-hosted options)
  • Running projects with low setup overhead
  • Restarting services when they crash
  • Exposing logs, CPU, and memory from one dashboard
  • Sending notifications when something needs attention

It runs in Docker, so setup stays predictable across machines.


Shipherd dashboard
Shipherd dashboard

How It Works Day-to-Day

For me, the best part is that Shipherd changes the way I think about side projects.


Before Shipherd, I delayed small improvements because deployment felt annoying. Now, I can treat side projects as always-on systems instead of fragile experiments.


Project creation wizard
Project creation wizard

Source Options

Shipherd has three main ways to connect your code:

Your Mounted Filesystem

If you have a project on your server, you can point Shipherd to its directory. It will run the code right there, so you can keep using your existing workflow. This is great for projects that aren't in Git or for quick experiments.


File picker in the project creation wizard
File picker in the project creation wizard

Git Providers

You can connect GitHub, GitLab, self-hosted Forgejo, or any Git repository. Shipherd will pull the latest changes and run your code automatically. This is perfect for projects that are already in Git and for teams.


Git project asking for authentication
Git project asking for authentication

Sample Projects

If you're not sure how to get started, Shipherd has sample templates for Node.js, Python, Go, and Rust. You can create a new project from one of these templates and have a working app in seconds.


Sample projects
Sample projects

What Makes It Useful

Push and Forget

The project can track your main branch and pull new changes automatically, so deployment becomes completely automatic for many use cases.

Self-Healing by Default

If a process crashes, Shipherd can restart it and notify you through email, Discord, or webhooks. That closed the biggest gap in my personal hosting setup: silent failure.

Live Operations Visibility

Logs and resource usage are available from the dashboard, so troubleshooting no longer starts with SSH.


Live logs and monitoring view
Live logs and monitoring view


Notifications and alert settings
Notifications and alert settings

Runtime Support and Shipherd Tools

Shipherd's runtime already supports Node.js, Python, Go, and Rust projects. For application-side integration, shipherd-tools currently ships as an official Node.js SDK (tools-node) v1. It wraps health checks, logging, and control APIs so apps can report richer runtime data back to Shipherd.


Rust, Go, and Python SDK packages are in active development and are a first-priority part of the roadmap. The platform contract is already language-agnostic, so these SDKs are being built for parity rather than as second-class add-ons.

Why This Project Matters to Me

Shipherd started as a personal painkiller, but it became one of the projects that most improved how I build software.


It taught me how to design for reliability as a product feature, not just a backend concern. It also pushed me to think in terms of real workflows: what people do before, during, and after deployment.


Today, Shipherd is the platform I wish I had from day one: practical self-hosting with fewer babysitting tasks and much faster feedback loops.