Try an external Extension
Install the public GitHub Issues example directly or through its Catalog, then sync and search real data.
The standalone barisgit/ctxindex-extensions repository proves that an Extension and Catalog can live outside ctxindex and use only the published SDK packages. Its barisgit.github-issues Extension needs no credentials: it indexes public GitHub issues and comments through the anonymous API.
Extensions execute trusted package code in-process. Read the repository before installing it. GitHub's anonymous API limit is 60 requests per hour per IP, so use a small public repository for the first run.
Install directly from Git
ctxindex extension install git \
'git+https://github.com:443/barisgit/ctxindex-extensions.git#main' \
barisgit.github-issues \
--format jsonThe explicit :443 keeps Bun 1.3.14 on the verifiable Git transport instead of its GitHub archive shorthand. ctxindex resolves the mutable main request once, records the exact commit, validates the complete resulting registry, and installs immutable managed bytes.
Or discover it through the Catalog
The same repository exports the barisgit.ctxindex-extensions Catalog and commits its inert snapshot:
ctxindex extension catalog add community \
https://github.com/barisgit/ctxindex-extensions.git \
--ref refs/heads/main \
--trust
ctxindex extension catalog search github --format json
ctxindex extension install catalog community barisgit.github-issues --format jsonCatalog search refreshes configured Catalogs by default. Add --no-refresh to use stored snapshots offline. The Catalog is optional curation; direct npm, Git, and local installation remain first-class.
Add a Source and use it
ctxindex realm add demo --name "Demo"
ctxindex source add github.issues \
--realm demo \
--label gh-issues \
--config-owner barisgit \
--config-repository ctxindex
ctxindex sync --source gh-issues --format json
ctxindex search issue \
--source gh-issues \
--local-only \
--limit 5 \
--format json
ctxindex search \
--source gh-issues \
--kind software.issue \
--field state=open \
--local-only \
--format jsonCopy a returned Ref through unchanged:
ctxindex get 'ctx://<source-id>/issue/42' --format json
ctxindex thread 'ctx://<source-id>/issue/42' --format jsonThe checked implementation, Catalog, synthetic HTTP tests, and package manifest are all in the external repository. To understand how it is authored, continue with the Extension SDK guide.
Update, inspect, and remove
ctxindex extension list --format json
ctxindex extension update barisgit.github-issues --format json
ctxindex extension uninstall barisgit.github-issues --format jsonUpdates explicitly reacquire and re-pin installed code. Uninstall is blocked while configured Sources depend on the Extension unless --force preserves those Sources and their materialized data as unavailable.
Installed documentation stays offline and agent-readable:
ctxindex docs list --extension barisgit.github-issues --format json
ctxindex docs search "first sync" --extension barisgit.github-issues --format json
ctxindex docs get README.md --extension barisgit.github-issues