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
Start from local packages too. 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
Create and serve a new repo
Use packages you already built, or package from a manifest or Cargo.toml, then publish a signed repo you can host anywhere static files work.
arx init ./repo 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