arx is a deploy agent for your home server. Point it at a GitHub repo; it builds, routes through Traefik with ACME TLS, and keeps the service alive across zero-downtime swaps.
Status: early. v1 is taking shape. Use at your own risk.
Run it yourself on the box that will host the daemon:
curl -sSL https://raw.githubusercontent.com/arxdevs/arx/main/install.sh | sh
arx setupOr have a coding agent (Claude Code, Codex, Cursor, Copilot) do it:
Read https://raw.githubusercontent.com/arxdevs/arx/main/install.md and install arx
arx -w default project create --slug demo --name Demo
arx -w default -p demo service create \
--slug web --name Web --kind git \
--repo your-org/your-repo --branch main
arx -w default -p demo domain add web web.your-domain
arx -w default -p demo deploy webarx auto-detects the build stack (Gradle/Maven JVM, Node, Python, Go, Rust). If your repo has a Dockerfile at its root, arx uses it as-is. Override per service:
arx -w default -p demo service config set web \
--build-cmd "..." --start-cmd "..."Service variables (var set) are available both at build time and at runtime.
For auto-detected stacks they appear in your build command as ordinary env vars
(e.g. process.env.MY_VAR) — no code change. They ride a BuildKit secret, so
values never land in the image history or layers. In a custom Dockerfile
you opt in by mounting the secret yourself:
# syntax=docker/dockerfile:1.7
RUN --mount=type=secret,id=arx_env \
. /run/secrets/arx_env && npm run buildPoint each service at a workspace package with --root-directory. arx will detect turbo.json / pnpm-workspace.yaml / package.json#workspaces in an ancestor directory and switch to a workspace-aware build (pnpm --filter ./apps/web, bun --filter, npm -w, or yarn workspace <name>). The Docker build context becomes the monorepo root, so a .dockerignore at the root is recommended.
The build honors the repo's packageManager field (corepack), copies only the workspace package.json manifests into a cached dependency-install layer, and installs once — so source-only changes reuse the install cache.
arx -w default -p demo service create \
--slug web --name Web --kind git \
--repo your-org/your-mono --branch main \
--root-directory apps/web
arx -w default -p demo service create \
--slug api --name API --kind git \
--repo your-org/your-mono --branch main \
--root-directory apps/apiPushes only redeploy services whose --root-directory (or --watch-path glob) intersects the changed files, so editing apps/web/** will not rebuild api. Override the default with one or more --watch-path glob patterns when needed.
arx --help
arx <noun> --help
--json for machine output, -q/--quiet to suppress informational messages.
Licensed under either MIT or Apache-2.0 — pick whichever fits your project.