Arcane Templates

Arcane Docker Compose templates maintained by Heretek AI. Add the registry in Arcane's template settings:

https://raw.githubusercontent.com/Heretek-AI/arcane-repo/main/registry.json

Templates

Template Description
codeg Multi-agent coding workspace (Claude Code, Codex, Gemini CLI)
crawl4ai Open-source LLM-friendly web crawler & scraper
firecrawl Self-hosted web scraping API for AI agents
memos Self-evolving memory OS for LLMs & AI agents

Adding a template

Each template lives in templates/<id>/ (<id> = lowercase letters, digits, hyphens):

templates/my-app/
├── compose.yaml     # the Compose project (this exact name, images only)
├── .env.example     # every variable compose.yaml uses without a default
├── template.json    # name, description, author, icon_url, tags
└── README.md        # deployment notes with a "## Deployment" section

template.json:

{
  "name": "My App",
  "description": "What it does, in one line.",
  "author": "Your name or GitHub handle",
  "icon_url": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/my-app.svg",
  "tags": ["tools"]
}

Rules (checked by CI on every pull request):

  • The compose file is named compose.yaml and uses prebuilt image: references (no build: contexts — Arcane deploys without the upstream source tree).
  • Every service sets restart: and carries a com.getarcaneapp.arcane.icon label; x-arcane.icon matches template.json's icon_url.
  • Images track :latest, except stateful services (databases, queues, caches), which keep a major-version tag.
  • Every ${VAR} without a default is documented in .env.example; secrets and passwords stay empty or use obvious placeholders.
  • Tags come from tags.json.
  • docker compose config must accept the template with .env.example as its env file.

Check locally before pushing (needs Python 3 with pyyaml and jsonschema, plus Docker for the compose check):

pip install pyyaml jsonschema
python3 scripts/build_registry.py validate

How the registry is built

python3 scripts/build_registry.py generate scans templates/ and writes registry.json in the same format as https://registry.getarcane.app/registry.json (validated against schema.json, copied from the official registry).

Do not edit registry.json by hand: CI regenerates and commits it on every merge to main (.github/workflows/publish.yml). Each entry carries a content_hash over its source files; the registry version bumps minor on new templates and patch on changed ones. A version set in template.json always wins, otherwise the generator assigns 1.0.0 / patch bumps.

URL bases default to this repo's raw content URLs and can be overridden with PUBLIC_BASE, DOCS_BASE, REGISTRY_URL, and SCHEMA_URL.

Layout

templates/<id>/   one directory per template
tags.json         allowed template tags (mirrors the official registry)
scripts/          registry generator + template linter (stdlib + pyyaml)
schema.json       registry JSON schema (mirrors the official registry)
registry.json     generated by CI, do not edit by hand
review/           local-only upstream sources, never committed
S
Description
No description provided
Readme
71 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 100%