Back Original

Show HN: Artifact Keeper – Open-Source Artifactory/Nexus Alternative in Rust

Artifact Keeper - Your packages. Your servers. Your freedom.

Your packages. Your servers. Your freedom.

Website · Docs · Live Demo · MIT Licensed

GitHub Stars License 45+ Formats Rust


A full-featured, enterprise-grade artifact registry you can self-host in minutes. Drop-in replacement for JFrog Artifactory and Sonatype Nexus with zero feature gates — security scanning, SSO, replication, all 45+ package formats — everything ships in the open-source release.

No open-core. No "enterprise edition." No surprise invoices.

Artifact Keeper Web Dashboard

Repository Description Stack
artifact-keeper Backend server, CLI, and Docker deployment Rust, Axum, PostgreSQL, Meilisearch
artifact-keeper-web Web frontend Next.js 15, TypeScript, Tailwind CSS, shadcn/ui
artifact-keeper-ios iOS & macOS app SwiftUI, Swift 6, Alamofire
artifact-keeper-android Android app Jetpack Compose, Kotlin, Material 3
artifact-keeper-api OpenAPI 3.1 spec (165 endpoints) TypeScript + Rust SDK generation
artifact-keeper-example-plugin Example WASM plugin (Unity .unitypackage) Rust, WIT, Wasmtime

45+ Package Formats — Native protocol support. Not a generic blob store with format labels. Your package managers (pip install, npm install, docker pull, cargo add, helm install, go get, etc.) talk directly to Artifact Keeper using their native protocols.

Security Scanning — Automated vulnerability detection with Trivy and Grype. Policy engine with severity thresholds, quarantine workflows, and scan-before-download enforcement.

WASM Plugin System — Extend with custom format handlers via WebAssembly. Ship your own package format support without forking the backend.

Edge Replication — Mesh-based artifact distribution with swarm sync and P2P transfers between nodes. Put caches close to your build agents.

SSO & Multi-Auth — OpenID Connect, LDAP, SAML 2.0, JWT, and API tokens. RBAC with per-repository permissions.

Artifactory Migration — Built-in tooling to migrate repositories, artifacts, users, and permissions from JFrog Artifactory. One command.

Full-Text Search — Meilisearch-powered search across all repositories, packages, and artifact metadata.

Manage your registries from anywhere. Monitor builds, browse repositories, trigger security scans, and administer users — all from native mobile apps with adaptive layouts.

Artifact Keeper macOS App

Artifact Keeper Android App Artifact Keeper iOS App

A full management interface for repositories, packages, security policies, user administration, SSO configuration, replication topology, and operational analytics.

Artifact Keeper Web Dashboard

# Clone and start with Docker Compose
git clone https://github.com/artifact-keeper/artifact-keeper.git
cd artifact-keeper
docker compose up -d

# That's it. Visit http://localhost:9080

Or pull the pre-built images directly:

# Backend (required)
docker pull ghcr.io/artifact-keeper/artifact-keeper-backend:latest

# Web dashboard (recommended)
docker pull ghcr.io/artifact-keeper/artifact-keeper-web:latest

Full deployment guides for Docker, Kubernetes, and AWS are in the docs.

graph TB
    subgraph Clients["Clients"]
        CLI["CLI & Package Managers<br/><sub>pip · npm · docker · cargo<br/>helm · go · maven · ...</sub>"]
        WebApp["Web Dashboard<br/><sub>Next.js 15 · Desktop Browser</sub>"]
        iOS["iPhone · iPad · Mac<br/><sub>SwiftUI · Swift 6</sub>"]
        Android["Android Phone · Tablet<br/><sub>Jetpack Compose · Kotlin</sub>"]
    end

    subgraph Core["Artifact Keeper Backend"]
        API["REST API Gateway<br/><sub>Rust · Axum</sub>"]
        Handlers["45+ Format Handlers<br/><sub>Native protocol support</sub>"]
        WASM["WASM Plugin Runtime<br/><sub>Wasmtime · WIT</sub>"]
        Auth["Auth Engine<br/><sub>OIDC · LDAP · SAML · JWT</sub>"]
        Policy["Policy Engine<br/><sub>Severity gates · Quarantine</sub>"]
    end

    subgraph Data["Data Layer"]
        PG[("PostgreSQL 16<br/><sub>Metadata & config</sub>")]
        Storage[("Storage<br/><sub>S3 / Filesystem</sub>")]
        Meili[("Meilisearch<br/><sub>Full-text search</sub>")]
    end

    subgraph Security["Security Scanning"]
        Trivy["Trivy<br/><sub>Container & FS scanning</sub>"]
        Grype["Grype<br/><sub>Dependency scanning</sub>"]
    end

    subgraph Edge["Edge Replication"]
        Peer1["Edge Node"]
        Peer2["Edge Node"]
        Peer3["Edge Node"]
    end

    CLI -->|"Native protocols"| API
    WebApp --> API
    iOS --> API
    Android --> API

    API --> Handlers
    API --> Auth
    Handlers --> WASM
    Handlers --> Policy

    API --> PG
    Handlers --> Storage
    API --> Meili

    Policy --> Trivy
    Policy --> Grype

    API <-->|"Borg Replication"| Peer1
    API <-->|"Borg Replication"| Peer2
    API <-->|"Borg Replication"| Peer3
    Peer1 <-->|"P2P Mesh"| Peer2
    Peer2 <-->|"P2P Mesh"| Peer3
    Peer1 <-->|"P2P Mesh"| Peer3

    style Core fill:#1a1a2e,stroke:#e94560,color:#fff
    style Data fill:#16213e,stroke:#0f3460,color:#fff
    style Security fill:#1a1a2e,stroke:#e94560,color:#fff
    style Edge fill:#0f3460,stroke:#533483,color:#fff
    style Clients fill:#16213e,stroke:#0f3460,color:#fff

    style API fill:#e94560,stroke:#e94560,color:#fff
    style Handlers fill:#e94560,stroke:#e94560,color:#fff
    style WASM fill:#533483,stroke:#533483,color:#fff
    style Auth fill:#e94560,stroke:#e94560,color:#fff
    style Policy fill:#e94560,stroke:#e94560,color:#fff

    style PG fill:#0f3460,stroke:#0f3460,color:#fff
    style Storage fill:#0f3460,stroke:#0f3460,color:#fff
    style Meili fill:#0f3460,stroke:#0f3460,color:#fff

    style Trivy fill:#533483,stroke:#533483,color:#fff
    style Grype fill:#533483,stroke:#533483,color:#fff

    style Peer1 fill:#533483,stroke:#533483,color:#fff
    style Peer2 fill:#533483,stroke:#533483,color:#fff
    style Peer3 fill:#533483,stroke:#533483,color:#fff

    style CLI fill:#0f3460,stroke:#0f3460,color:#fff
    style WebApp fill:#0f3460,stroke:#0f3460,color:#fff
    style iOS fill:#0f3460,stroke:#0f3460,color:#fff
    style Android fill:#0f3460,stroke:#0f3460,color:#fff
Loading

Contributions are welcome. Pick an issue, open a PR, or start a discussion. The backend is Rust, the frontend is TypeScript/React, and the mobile apps are native Swift and Kotlin.

MIT. Every feature. No exceptions.