Self-hosted Composer registry Git sources, REST API, private packages, team tokens

Packio

Lightweight private package registry for Composer Connect repositories, publish packages from tags, and install them securely with Composer. Automate the same registry workflows through the REST API.

Or continue with

Registry setup

acme.packio.local

composer repository

Organization

acme

Repository URL

https://acme.packio.local/packages.json

Packages

12

available in the registry

Visibility

8 public / 4 private

token required for private packages

Global auth

composer config --global --auth http-basic.acme.packio.local token <registry-token>

Organization-scoped registries

Private package access tokens

Full REST API for automation

Repository webhooks and automated source sync

Hosted, self-hosted, and generic Git sources

OAuth and token-based source access

Workflow

From repository to installable package

1

Connect sources

Attach GitHub, GitLab, Bitbucket, Codeberg, self-hosted GitLab, or a generic Git repository.

2

Publish from tags

Packio reads composer.json, releases, dist archives, and package metadata.

3

Install privately

Use Composer tokens for CI, developers, and protected packages.

REST API

Automate registry operations

Create scoped API tokens from your profile and drive Packio from scripts, internal tooling, CI jobs, or deployment pipelines.

Organizations, members, and invitations
Sources, webhooks, packages, and releases
Registry tokens, provider authorizations, and admin operations

Source providers

Connect more than GitHub and GitLab

Mix hosted providers, self-hosted GitLab instances, and manual Git URLs in the same organization registry.

GitHub OAuth discovery, private repositories, and webhook sync.
GitLab GitLab.com and organization-managed self-hosted instances.
Bitbucket Workspace repositories with OAuth-backed source access.
Codeberg Codeberg repositories, tags, archives, and webhook updates.
Generic Git Manual HTTPS or SSH repository URLs for custom Git hosting.

Composer repository

Add your organization registry once, then require packages by name.

composer.json

{
  "repositories": [
    { "type": "composer", "url": "https://default.packio.local/packages.json" }
  ]
}
composer require vendor/package

Token authentication

Use registry tokens locally or in CI without exposing provider credentials.

Global auth

composer config --global --auth http-basic.default.packio.local token <registry-token>

COMPOSER_AUTH

COMPOSER_AUTH={"http-basic":{"default.packio.local":{"username":"token","password":"<registry-token>"}}}

Start with one repository

Create an organization, connect a source, and Packio will keep the registry ready for Composer installs.

Packio, a lightweight private package registry for Composer
packio.us v1.16.3 (6518a0e)