Live dogfood repo

Publish package repos like a static blog.

Import an existing apt/yum repo or start from local .deb/.rpm files and package drop directories. ArtifactX signs the metadata and emits static files you can host on Pages, S3, nginx, or arx serve.

# 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
Import

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.

Create

Start from local packages too. Run arx init, add .deb/.rpm files or a whole dist/ directory, publish, and serve from the same binary.

Drop dirs

Repeatable production drops. arx publish-dir ingests changed packages, publishes metadata, can cut over live symlinks, and leaves downstream sync explicit.

Rollback

Bad release? Keep published states and return clients to a previous repo snapshot.

Static

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