DEV Community

Cover image for LLM-First Approach to Self-Hosting with Haloy
Andreas M
Andreas M

Posted on

LLM-First Approach to Self-Hosting with Haloy

I've been deploying apps and websites to servers I own or rent since the late nineties. A lot has changed over the years, but one thing has stayed the same: it's tedious work.

The last decade has been all about Docker, and that has made things more stable and reproducible, but the setup and deployment process hasn't gotten any better. It was actually simpler a couple of decades ago. Now it's SSH in, install Docker, write a Dockerfile, figure out nginx configs for SSL, debug why the proxy isn't working, and eventually get something running.

Every project feels like reinventing the wheel.

What if your AI coding assistant could handle deployment config?

That's the idea behind Haloy and its agent skills. Haloy is a deployment tool for self-hosting. Think docker-compose, but for production. You write a haloy.yaml, run haloy deploy, and your app is live with automatic HTTPS.

The interesting part is the agent skills. These are packaged instructions that teach AI coding assistants (Claude Code, Cursor, etc.) how to prepare your app for deployment.

Two skills, two steps

Install the skills with:

npx skills add haloydev/agent-skills
Enter fullscreen mode Exit fullscreen mode

Step 1: Dockerize your app

First, you need a Dockerfile. The dockerize skill handles this. In Claude Code, I use the /dockerize command. Other tools might trigger it differently, but the idea is the same: tell your assistant to dockerize the project.

It will:

  • Detect your framework (Tanstack Start, Next.js, FastAPI, Go, whatever)
  • Create a multi-stage Dockerfile with the right base image
  • Add a health check endpoint if you don't have one
  • Generate a proper .dockerignore

Step 2: Create the Haloy config

Once you have a Dockerfile, use the haloy-config skill. In Claude Code, I use /haloy-config. It will:

  • Figure out which port your app runs on
  • Ask which of your configured servers to deploy to
  • Ask for your domain
  • Generate a working haloy.yaml

What this actually looks like

You're in your project directory with a TanStack Start app. You run /dockerize in Claude Code. It reads your package.json, creates a Dockerfile with Node 24, and adds a /health route.

Then you run /haloy-config. It asks for your server and domain, and generates haloy.yaml.

Run haloy deploy and you're live.

The VPS setup

On the server side, it's one command:

curl -fsSL https://sh.haloy.dev/install-haloyd.sh | API_DOMAIN=haloy.yourserver.com sh
Enter fullscreen mode Exit fullscreen mode

This installs the Haloy daemon and gives you a token. Add the server to your local CLI with haloy server add, and you're done.

Why this matters

Self-hosting shouldn't require deep DevOps knowledge for every project. But the tooling has always assumed you know what you're doing.

LLM coding assistants are good at following instructions. Agent skills give them the right instructions for deployment. You get the benefits of self-hosting (control, cost, no vendor lock-in) without the setup friction.


Links:

Top comments (0)