CrawlBar is a macOS menu bar control plane for local-first *crawl apps.
It discovers crawler CLIs, reads metadata manifests, shows status/freshness/counts, runs refresh and doctor actions, writes redacted job logs, and keeps per-app config in ~/.crawlbar/config.json.
For gitcrawl and discrawl, CrawlBar also understands Cloudflare-backed remote archives: remote status, remote archives, and compressed SQLite cloud publish actions appear in the app when the installed CLI exposes them.
Built-in manifests ship for:
gitcrawlslacrawldiscrawltelecrawlimsgcrawlphotoscrawl(coming soon)weicrawlnotcrawlgogclithrough thegogexecutablewaclibirdclawgraincrawl
gogcli, wacli, and birdclaw can run either locally or over SSH from
their CrawlBar settings. This covers setups where the real archive or account
tooling lives on a server.
Future crawler repos can drop a manifest JSON file into ~/.crawlbar/apps/*.json to appear without a CrawlBar code change.
swift build
swift run crawlbar-selftest
swift run crawlbarctl apps --jsoncrawlbar apps [--json]
crawlbar metadata [--app gitcrawl] [--json]
crawlbar status [--app all] [--json]
crawlbar query --app all -- manifest
crawlbar query --app slacrawl -- 'select count(*) from messages;'
crawlbar doctor --app discrawl [--json]
crawlbar refresh --app slacrawl [--json]
crawlbar action desktop-cache-import --app discrawl [--json]
crawlbar action cloud-publish --app discrawl [--json]
crawlbar action remote-status --app gitcrawl [--json]
crawlbar logs [--json]
crawlbar config path|validate|init
crawlbar dev register --app gitcrawl --binary /path/to/gitcrawl [--json]
crawlbar dev unregister --app gitcrawl [--json]
crawlbar dev list [--json]During development the SwiftPM product is crawlbarctl to avoid colliding with
the CrawlBar app binary on case-insensitive macOS filesystems. The install
script places it on PATH as crawlbar.
brew install openclaw/tap/crawlbarMain config lives at:
~/.crawlbar/config.json
Action logs live at:
~/.crawlbar/logs
Both are written with private file permissions. Command output is redacted before it is returned to the UI or persisted as an action log.
Scripts/package_app.shThe packaged .app is written to dist/CrawlBar.app.
Local and CI packages use ad-hoc signing and do not need release credentials.
Official release packages fail closed unless they use the OpenClaw Foundation
Developer ID identity. Runtime keychain and notarization profile locators belong
in the ignored .mac-release.local.env, never in committed configuration.
Release notes are kept in CHANGELOG.md. The packaged app bundle
version is read from version.env. Official artifacts are universal, hardened,
notarized, stapled, and verified by Scripts/package_release.sh.
