Migrate existing repos. Pull from apt Packages metadata or yum repodata, then publish your own signed repo. It is a controlled migration path, not a blind mirror.
# One installer, apt or dnf/yum. curl -fsSL https://artifactx-rs.github.io/artifactx/install.sh | sh # Want to inspect first? curl -fsSL https://artifactx-rs.github.io/artifactx/install.sh
Build Linux packages too. arx pack emits .deb, .rpm, .apk, and Arch packages from one manifest or Cargo.toml.
Start from local packages. Run arx init, add .deb/.rpm files or a whole dist/ directory, publish, and serve from the same binary.
Repeatable production drops. arx publish-dir ingests changed packages, publishes metadata, can cut over live symlinks, and leaves downstream sync explicit.
Bad release? Keep published states and return clients to a previous repo snapshot.
Host it like a blog. Publish signed repo files to GitHub Pages, S3, nginx, or serve them from the same arx binary.
Import an upstream repo
Start with packages you already publish elsewhere. Filter the first migration, verify apt/dnf clients, then regenerate static repo files under your own stable signing key.
arx init ./repo arx import https://packages.example.com --apt \ --dist stable --component main \ --match-name myapp --limit 20 arx publish --root ./repo arx serve --root ./repo # 127.0.0.1:8080
Package, publish, and serve
Build Linux packages from a manifest or Cargo.toml, add the .deb/.rpm outputs, then publish a signed repo you can host anywhere static files work.
arx init ./repo cargo build --release arx pack ./Cargo.toml --out dist arx add dist --root ./repo arx publish --root ./repo arx serve --root ./repo # 127.0.0.1:8080
Operate a package drop directory
For repeated build drops, use no-op detection, publish, live cutover, and explicit downstream sync boundaries without a wrapper script.
arx publish-dir ./dist --root ./repo \ --apt-live ./public/deb \ --yum-flat-live ./public/repo
Docker users get Compose
Generate deploy files from the same repo. Compose binds inside the container to 0.0.0.0:8080 so Docker port publishing works.
arx compose --root ./repo --out ./deploy cd ./deploy docker compose up -d
Operators get API + systemd
arx serve defaults to localhost. Put systemd and a reverse proxy around it; use ARX_SERVE_TOKEN only when write APIs are enabled.
arx serve --root /var/lib/arx/repo curl -fsS http://127.0.0.1:8080/api/v1/health journalctl -u arx -f