Developers

Developer Hub

The LeiOS Developer Hub is where packages for the LeiOS repository are published and reviewed. Developers upload their builds there, and LeiOS admins review stable promotions and cut LeiOS releases.

Getting an account

Self-service sign-up is not available yet. To get an account, ask a LeiOS admin on Discord.

Concepts

Publishers

A publisher owns packages. It can be a person, a team or an organization. A publisher name:

  • is 2 to 50 characters long,
  • uses lowercase letters, digits and hyphens only,
  • starts and ends with a letter or digit.

Some names are reserved, including leios and leicraft.

Every publisher has an owner. The owner's name and email address are what the repository expects in the Maintainer field of every package the publisher uploads. See Publishing Packages.

Packages

A package belongs to a publisher. Its full name is <publisher>.<package>, for example acme.hello-world. The package name must match the Package field inside your .deb.

Releases

A release is one version of a package, for example 1.2.0-1. Each release can contain one build per architecture: amd64, arm64, or a single all build for architecture-independent packages.

Roles

Publisher members have one of four roles:

RoleCan do
AdminEverything a maintainer can, plus edit the publisher, manage its members, and delete packages and releases.
MaintainerEverything a developer can, plus edit packages and releases.
DeveloperCreate packages, publish releases, and request stable promotion.
ViewerRead-only access.

The publisher's owner can do everything, and is the only one who can delete the publisher.

You can also give someone a role for a single package, for example to let an outside contributor publish releases of that package only. If a person has both a publisher role and a package role, the higher one applies.

The Repository API

Everything the Hub does goes through the LeiOS Repository API at https://api.leios.dev, so you can automate publishing from CI.

Base URLhttps://api.leios.dev/v1
Interactive referenceapi.leios.dev/docs/v1
OpenAPI specificationapi.leios.dev/docs/v1/openapi
AuthenticationAuthorization: Bearer <token>, with a session token or an API key

Every response has the same shape: { "success", "code", "message", "data" }.

API keys

For scripts and CI, use an API key instead of your password. API keys start with lra_apikey_. Create one by logging in and calling /v1/account/apikeys with the session token:

# 1. Log in. The session token is in data.token.
curl -s https://api.leios.dev/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username": "<username>", "password": "<password>"}'

# 2. Create an API key. The key is in data.token and is shown only once.
curl -s https://api.leios.dev/v1/account/apikeys \
  -H "Authorization: Bearer <session token>" \
  -H "Content-Type: application/json" \
  -d '{"description": "CI uploads", "expires_at": "90d"}'

expires_at is one of 7d, 30d, 90d, 180d, 365d, or null for no expiry. Store keys like passwords, for example as masked CI variables, and use the shortest expiry that works for you.

The Hub does not have a page for managing API keys yet, and the public package explorer is still in development.