🗂️ Create a custom registry
An ASC registry is static JSON: registry.json links to category indexes, and each category lists packages.
my-registry/
├── registry.json
└── categories/web.json// registry.json
{
"name": "acme-registry",
"format_version": 1,
"categories": [{ "name": "web", "index": "categories/web.json" }]
}// categories/web.json
{
"category": "web",
"packages": [{
"name": "example-web",
"type": "app",
"description": "Example web application",
"source": { "git": "https://github.com/acme/example-web" }
}]
}GitHub repository
Commit the files to a public repository, then add its raw directory URL:
asc source add https://raw.githubusercontent.com/acme/my-registry/main --name acme
asc update
asc search example-web
asc install example-web --source acmeYour own site
Serve the JSON directory over HTTPS. For Nginx:
server {
listen 443 ssl;
server_name packages.example.com;
root /var/www/asc-registry;
location / { try_files $uri =404; }
}sudo asc source add https://packages.example.com --name acme
asc update
asc search example-webUse the registry schemas to validate JSON. sudo asc source add makes the source available to all server users; without sudo it is per-user.
Platform-managed sources
SourceService is the API equivalent of sudo asc source add/remove — how the AdminService.Cloud platform pushes an organization's registries onto a connected node without SSH access. ListSources returns the system-scope list only; ReplaceSources is an idempotent full replace of it (deletions included), so once a node is platform-managed, a source added by hand with sudo asc source add is removed by the next push unless it's also in the platform's own list. Advertised via GetStatus's capabilities as "sources".