Arca
An artifact repository server that runs as a single Go binary. It speaks Maven 2, npm and Eclipse p2, stores artifacts on disk, keeps metadata in SQLite, and serves an embedded React UI from the same process. There is no separate database to run, no application server, and no config file to write before the first start.

What it does
- Three formats. Maven 2, npm and Eclipse p2, chosen per repository and fixed once it exists.
- Hosted, proxy and group repositories. Publish to a hosted repository, mirror Maven Central, registry.npmjs.org and download.eclipse.org through a proxy that caches what it serves, or put a p2 group over several update sites so a target platform needs one location instead of a dozen.
- Version policies. A repository takes releases only, prereleases only, or both.
- Per user permissions. Public repositories are readable without an account. Private ones are granted per user, per repository.
- Generated metadata.
maven-metadata.xmland npm packuments are built from the database, so they cannot drift from what is actually stored. - Insights. Traffic, storage and per version artifact management, with the numbers coming from real requests rather than estimates.
- Your own front page. A markdown welcome text, an accent colour and a logo of your own, so the landing page explains what the instance is for instead of listing repositories at a stranger.
Where to start
| If you want to | Read |
|---|---|
| Run it locally and look around | Installing |
| Resolve and publish jars | Using it from Maven |
| Resolve and publish packages | Using it from npm |
| Resolve Eclipse bundles and features | Using it from Eclipse |
| Move off Sonatype Nexus | Migrating from Nexus |
| Put it on a server | Deploying |
| Run it day to day | Managing an installation |
Need help?
Join our Discord! Our lovely developer and friends will try to help you out.
Finding things
Search spans every repository you can read, in any format, matching names and namespaces.

How it fits together
One process serves three things on the same port:
| Path | Serves |
|---|---|
/repository/<name>/** |
the Maven or npm endpoint, depending on the repository format |
/api/** |
the JSON API the UI runs on |
| everything else | the embedded React bundle |
Uploads are streamed to disk while MD5, SHA-1, SHA-256 and SHA-512 are computed in one pass, so an artifact is bounded by disk rather than memory. SQLite means one writer at a time, which is fine for a single instance but rules out several replicas sharing a database file.