The live app catalog for Darc.
Each service lives in one JSON file under
catalog/<category>/<service-id>.json. The category comes from its folder; it
is not repeated inside the service file. Category names and service IDs use
lowercase slugs, such as development and darc-code. IDs must be unique
across the catalog and match their filenames. The
JSON Schema is the source of truth for service fields.
The repository check and Darc compile it with ArkType's JSON Schema adapter.
catalog/
demo/
welcome-to-docker.json
design/
excalidraw.json
development/
darc-code.json
darc-dev.json
assets/
welcome-to-docker.png
excalidraw.png
darc-code.png
darc-dev.png
Add a JSON file to an existing category, or create a new category folder. Every
service requires id, name, description, iconUrl, and type.
A web service uses type: "url" and an HTTP(S) url:
{
"id": "excalidraw",
"name": "Excalidraw",
"description": "Sketch diagrams and whiteboards in a shared canvas.",
"iconUrl": "assets/excalidraw.png",
"type": "url",
"url": "https://excalidraw.com"
}A Docker service uses type: "docker" and requires githubUrl, branch,
pathType (compose, dockerfile, or static), and path (relative to that
repository). An optional checkoutPath can prefill the checkout destination in
Darc. See darc-code.json for an example.
The demo category includes
Welcome to Docker, an
Agent54 copy of Docker's official static welcome page with its own
compose.yaml. The main branch builds the site and serves it with
nginx:alpine-slim as a non-root user on port 8080. The container has a read-only
filesystem, resource limits, and no database or host bind mounts. This catalog
entry launches the checked-in Compose file directly.
Icons can be an HTTP(S) URL or an assets/... path in this repository. Keep
repository assets under assets/ and use an image file extension.
Run deno task check before committing. GitHub Actions runs the same validation
on pushes and pull requests.
Darc checks the main branch through GitHub's recursive tree API whenever the
catalog opens. It loads the schema and each service through the Git blob API
using SHAs from that tree, so they belong to the same snapshot. Unchanged blobs
are cached in memory; each reopening still checks GitHub for additions, edits,
moves, and deletions. No generated index or Darc rebuild is needed for catalog
updates merged to main.
This repository is public so browser requests need no token. GitHub's REST API
supports CORS directly. If GitHub is unavailable or its public API rate limit is
reached, Darc shows an error and a retry button. The initial load uses one tree
request, one schema request, and one request per service; subsequent opens
request only the tree and changed or new blobs. Icons are served from
raw.githubusercontent.com.