The airlinklabs/addons repository is the central registry for community addons.
Each top-level folder is one addon. The folder name is the unique addon ID and must be lowercase with hyphens (e.g. modrinth-store, parachute).
airlinklabs/addons/
├── modrinth-store/
│ ├── info.json ← required: metadata, icon, tags, features
│ └── install.json ← required: install steps & commands
│
├── parachute/
│ ├── info.json
│ └── install.json
│
└── your-addon/
├── info.json
└── install.json
{
"name": "Display Name",
"version": "1.0.0",
"description": "Short one-line description shown on cards.",
"longDescription": "Longer paragraph shown in the detail popup. Optional — falls back to description.",
"author": "your-github-username",
"status": "working",
"tags": ["Minecraft", "Backups"],
"icon": "https://example.com/icon.svg",
"iconType": "url",
"features": [
"Feature one",
"Feature two"
],
"github": "https://github.com/you/your-addon-repo",
"screenshots": [],
"installNote": "Optional tip shown below install steps."
}| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ | Display name |
version |
string | ✅ | Semver e.g. 1.2.3 |
description |
string | ✅ | Short description (1–2 sentences) |
longDescription |
string | — | Longer description for detail popup |
author |
string | ✅ | GitHub username or display name |
status |
"working" | "beta" | "wip" |
— | Default: "working" |
tags |
string[] | — | Filter tags e.g. ["Minecraft", "API"] |
icon |
string | — | URL to an SVG, PNG, or WEBP icon |
iconType |
"url" | "svg" |
— | "url" = img src, "svg" = inline svg string. Default: "url" |
features |
string[] | — | Bullet points shown in the detail popup |
github |
string | — | Link to your addon's source repo |
screenshots |
string[] | — | Array of direct image URLs |
installNote |
string | — | Warning/tip shown after install steps |
{
"note": "Optional note shown at the bottom of install steps.",
"steps": [
{
"title": "Clone the addon",
"commands": [
"cd /var/www/panel/storage/addons/",
"git clone https://github.com/you/your-addon.git your-addon"
]
},
{
"title": "Install dependencies",
"commands": [
"cd /var/www/panel/storage/addons/your-addon",
"npm install",
"npm run build"
]
},
{
"title": "Restart AirLink panel",
"commands": [
"systemctl restart airlink-panel"
]
}
]
}| Field | Type | Required | Description |
|---|---|---|---|
note |
string | — | Warning/note shown below all steps |
steps |
Step[] | ✅ | Ordered list of install steps |
steps[].title |
string | ✅ | Step heading |
steps[].commands |
string[] | ✅ | Shell commands to run |
- The GitHub Actions workflow in
airlinklabs/panel-docsruns every 6 hours - It fetches the
airlinklabs/addonsrepo contents via the GitHub API - For each folder, it reads
info.jsonandinstall.json - It builds a single
public/api-cache/addons-registry.jsonfile - That file is committed and served statically — the site reads it at load time
This means your addon appears within 6 hours of being merged (or on the next manual workflow run).
- Fork
airlinklabs/addons - Create a folder:
your-addon-id/(unique, lowercase, hyphens only) - Add
info.jsonandinstall.jsonfollowing the schemas above - Open a Pull Request
- Once merged, the registry auto-updates ✅