| public | ||
| src/sigilwatch | ||
| test | ||
| .gitignore | ||
| package.sgl | ||
| README.md | ||
| sigil.lock | ||
SigilWatch
A self-hosted repository dashboard for GitHub and Codeberg/Forgejo, written in Sigil. It pulls metadata from your forges into a local SQLite database and presents it as a dark-mode web UI.
What it does
SigilWatch syncs repos you own or watch across multiple forges and gives you a single view of their health. It tracks branches, commits, releases, open issues, open pull requests, README/license presence, and flags repos that have gone stale.
You can sync all repos for a configured owner or add individual repos from any user on a supported forge.
GitHub uses the GraphQL API (one request per owner instead of dozens). Codeberg and other Forgejo/Gitea instances use the REST API.
Getting started
sigil deps install
sigil build
sigil run
The server starts on port 3333 by default. Open http://localhost:3333 and head to Settings to add your forges and owners, then visit Sync to pull your repos.
Configuration
SigilWatch reads its config from ~/.config/sigilwatch/config.sgl. You can
manage it through the Settings page in the web UI, or edit it directly:
(config
(forge name: "GitHub" type: "github" url: "https://github.com")
(forge name: "Codeberg" type: "forgejo" url: "https://codeberg.org")
(owner forge: "GitHub" name: "your-username" mine: #t token-env: "GITHUB_TOKEN")
(owner forge: "Codeberg" name: "your-username" mine: #t token-env: "CODEBERG_TOKEN"))
Tokens can be set via environment variables (recommended) or stored directly in the config file.
| Env Variable | Default | Description |
|---|---|---|
PORT |
3333 |
HTTP server port |
SIGILWATCH_DB |
data/sigilwatch.db |
SQLite database path |
Features
- Dashboard with status counts, last sync time, paginated mine/watching sections
- Repo detail showing branches, recent commits, releases, and local notes
- Activity feed of recent commits and releases across all repos
- Stale repos list (not updated in 90+ days)
- Missing README/license views
- Single repo sync to add any repo from any owner without pulling everything
- Multi-forge support (GitHub, Codeberg, Forgejo, Gitea)
- Per-repo notes stored locally in SQLite
Stack
Written entirely in Sigil:
sigil-webfor routing and middlewaresigil-httpfor the HTTP server and clientsigil-sxmlfor HTML generationsigil-sqlitefor the databasesigil-jsonfor JSON encoding/decodingsigil-logfor structured logging
License
AGPL-3.0