You push, your VPS updates itself
You pick the repository and the branch, and the panel clones the code onto the VPS, creates the webhook on GitHub and gets everything ready. From there, every push to that branch triggers a pull, runs your build and restart scripts, and records which commit was deployed. It's the flow of a Vercel-style platform, on a server where you have root and the price doesn't depend on how much traffic you get.
- Webhook created for you
- Build and restart scripts
- Commit history
See plans · Create a free account
Here's what it looks like in the panel


A complete deploy pipeline, no YAML
The convenience of a Vercel-style platform, on a server that's yours.
- Link the repo from the panel: You pick a repository from your GitHub account, the branch and a project name. The branch is checked to exist before the deploy is created.
- Automatic webhook: The webhook is created for you on GitHub, with SSL verification. There's nothing to touch in the repository settings.
- Pull on every push: Every push to the tracked branch triggers a git pull on the VPS. Pushes to other branches are ignored.
- Scripts before and after: A pre-pull script (which discards local changes by default) and a post-pull one to install dependencies, build or restart services.
- Visible status: Cloning, pulling, building, restarting, online, or error with the message. You know where each deploy stands.
- Commit history: Every commit received is recorded with its SHA, message, author, date and the files added, deleted and modified, with a link to GitHub.
- Manual redeploy: Deploy again with a button when you need to, without making an empty commit.
- The whole app in one place: You associate the repo's domains, systemd services and scheduled tasks with it, and see the whole application together.
- Several branches, one VPS: The same repo can be deployed on different branches within the same VPS: production and staging side by side.
- No YAML to maintain: There's no pipeline file to break when the syntax changes. Two shell scripts, which is what ends up running anyway.
- No build minutes: The build runs on your VPS. No minute quota and no runner queue: the limit is the CPU you're already paying for.
Your first deploy in minutes
- Connect your GitHub account: Once, from the panel.
- Pick a repo and a branch: The code is cloned onto the VPS and the webhook is created for you.
- Define build and restart: For example npm ci && npm run build, and restarting your service.
- Publish it with a domain: You assign a domain with HTTPS and every push updates it.
- Check the history: Every deployed commit is kept with its SHA, author, message and changed files. If something broke, you know exactly with what.
How it works underneath, and what to keep in mind
- There's no runner and no CI agent: the GitHub webhook notifies the VPS and the VPS runs git pull on the clone it already has. That's why a deploy takes as long as your build and nothing more.
- The pre-pull script discards local changes by default. That's on purpose: a file edited by hand on the server is the most common reason a pull fails in the middle of a deploy.
- The post-pull script is where everything of yours goes: installing dependencies, building, migrating the database, restarting your app's systemd service.
- Pushes to other branches are ignored. The same repository can be deployed on different branches within the same VPS, so production and staging coexist without stepping on each other.
- Each repository-and-branch combination is deployed once per VPS.
- It needs systemd running on the VPS. It's verified in production on Ubuntu 22.04 and compatible with 18.04, 20.04, 24.04 and 26.04; it isn't available on 16.04, because systemd 229 won't start on a host running cgroup v2.
- You need the GitHub account linked with a valid token. If the token expired right as you deleted a deploy, the webhook can be left hanging on GitHub and you have to delete it by hand.
- The build runs on the VPS and uses its memory. On the smallest plan, keep the repository light: building something big runs out of memory halfway through.
- Company administrators edit and delete deploys; members can view and create them.
- Real root over SSH: the panel is a shortcut, not a cage. Anything it does with a button, you can also do by hand.
Or just ask Claude, ChatGPT or Cursor
Everything you see in the panel, your AI agent can do through the ArduMaker MCP server: with your authorization, within the scope you grant, and with every action audited. See what the MCP does
Frequently asked questions
Do I have to set up the webhook on GitHub?
No. It's created automatically when you link the repository.
What happens if I push to another branch?
It's ignored. Only the configured branch triggers the pull.
Can I build and restart my app after every deploy?
Yes, with the post-pull script: you install dependencies, build, and restart your app's systemd service.
Can I see what was deployed and when?
Yes. Every commit is recorded with author, message, date and changed files, with a link to GitHub.
Does it work as an alternative to Vercel or Heroku?
For apps you want to run on a server of your own, yes: you get the same push-to-deploy flow, but with root, no function limits and the VPS's fixed price.
Do I need to write a pipeline file?
No. There are two shell scripts: one before the pull and one after. There's no YAML to break when the platform's syntax changes.
How long does a deploy take?
As long as your build takes. There's no runner queue and no CI minutes: the webhook notifies, the VPS pulls and runs your script. The CPU is the one you're already paying for.
Can I have production and staging on the same VPS?
Yes. The same repository can be deployed on different branches within the same VPS, each with its own scripts and its own domain.
What if I edited a file by hand on the server?
The pre-pull script discards local changes by default, precisely because that's the most frequent reason a deploy gets stuck. If you need different behavior, that script is yours to edit.
Can I deploy again without making a commit?
Yes, with the redeploy button. You don't need an empty commit to force the pull.
Services that go well together
- Domains and SSL: A free subdomain or your own domain with Let's Encrypt, an nginx proxy with rollback, and port forwarding.
- Services and scheduled tasks: Create systemd services for your app and cron-style scheduled tasks with logs, without writing systemctl.
- Docker: Enable Docker in one click and manage images, containers, logs, volumes and networks from the panel.
From push to production, on your own server Link your repo and let every commit deploy itself. See plans