bone (what you get when you stop barking) is a standalone Babashka script for browsing BARK reports. When fzf is available, bone lets you browse BARK reports interactively.
Assuming bbin is installed:
bbin install io.github.bzg/bone
Create ~/.config/bone/config.edn:
{:my-addresses ["you@example.com" "alias@example.com"]
:text-browser "w3m" ;; "w3m", "lynx" or "links"
:diff-pager "delta" ;; "delta", "bat" or "diff-so-fancy"
:sources [{:url "https://example.com/reports.json"
:repo "https://example.com/repo"}
{:url "/path/to/reports.json"
:repo "/path/to/repo"}]}:my-addressesβ your email address(es), used by-mto filter reports involving you. Can be a single string or a vector of strings.:text-browserβ terminal browser for viewing reports onRET. When unset, bone probes forw3m,lynx,links, then falls back toxdg-open.:diff-pagerβ pager for viewing patches onC-v. When unset, bone probes fordelta,bat, then falls back to$PAGERorless.:sourcesβ vector of report sources. Each source is a map with::urlβ URL or local path to the BARKreports.json.:repoβ (optional) public URL or local path of the associated code repository.
:skip-columnsβ vector of column names to hide by default (e.g.["priority" "score"]).:reportβ configuration forbone report(see Triage report).
bone [options] bone report [options] bone clear bone update
| Option | Description |
|---|---|
-f, --file FILE | Read reports from a JSON file |
-u, --url URL | Fetch reports from a URL |
-U, --urls-file FILE | Fetch and merge from URLs listed in FILE |
-M, --my-addresses EMAILS | Your email(s), comma-separated (overrides config) |
-n, --source NAME | Filter by source name |
-p, --min-priority N | Only show reports with priority >= N (1, 2 or 3) |
-s, --min-score N | Only show reports with score >= N (0β7) |
-S, --skip-columns COLS | Columns to hide, comma-separated |
-m, --mine | Show only reports involving your address(es) |
-c, --closed | Include closed reports |
- | Read JSON from stdin |
bone report prints a text triage report to stdout. It accepts the
same filtering options as interactive mode (-f, -u, -m, -c, etc.).
The report includes the following sections: overview, stale patches, stale bugs, active threads, recent reports, and owned reports.
The report can be configured in config.edn under the :report key:
{:report {:sections ["overview" "stale-patches" "stale-bugs"
"active-threads" "recent" "owned"]
:stale-days 14 ;; threshold for "stale" (default: 14)
:recent-days 7 ;; threshold for "recent" (default: 7)
:top-n 10}} ;; max items per section (default: 10):sectionsβ list of sections to include in the report.:stale-daysβ number of days after which a report is considered stale.:recent-daysβ number of days to look back for recent reports.:top-nβ maximum number of items shown in stale and active-threads sections (recentandownedare not capped).
| Command | Description |
|---|---|
-a, --add-source URL_OR_PATH | Add a reports.json source |
-r, --remove-source URL_OR_PATH | Remove a source |
-l, --list-sources | List configured sources |
Sources are stored in ~/.config/bone/config.edn under the :sources key.
| Command | Description |
|---|---|
clear | Empty the cache |
update | Fetch/update reports from all sources |
By default, bone reads cached reports if available. If no cache
exists, it fetches from sources once and caches the result. Use bone
update to refresh.
| Key | Action |
|---|---|
C-n | Move to the next line |
C-p | Move to the previous line |
RET | View report in terminal browser |
C-o | Open report in system browser |
C-v | View patch (fetched to cache) |
C-s | Change sort order |
C-r | Filter by report type |
C-b | Filter by source |
C-t | Filter by topic |
C-u | Update cache and reload |
C-h | Show help |
| C-x | Remove current filters |
Browse your reports from a local file:
bone -f reports.json -m
Browse all reports from a remote URL:
bone -u https://example.com/reports.json
Merge reports from multiple BARK instances:
bone -U my-urls.txt
The URLs file (-U) lists one URL per line; blank lines and #
comments are ignored.
Add a source and browse:
bone -a https://example.com/reports.json bone
Update cached reports and browse only yours:
bone update bone -m
| Path | Purpose |
|---|---|
~/.config/bone/config.edn | User configuration and sources |
~/.config/bone/cache/patches/ | Cached patches |
~/.config/bone/cache/reports/ | Cached reports.json files |
- Send a bug report with
[BUG] bone: <SHORT EXPLICIT BUG DESCRIPTION> - Send a patch with
[PATCH] bone: <COMMIT SUMMARY> - Send a feature request with
[FR] bone: <FEATURE REQUEST> - Share any other question or idea
You can also send me an email and support my work on liberapay.
This project uses Intentional Versioning, here are the three audiences:
Users: end users who browse BARK reports with boneIntegrators: external packagersMaintainers: maintainers of the codebase
If you like Clojure(script), please consider supporting maintainers by donating to clojuriststogether.org.
Copyright Β© 2026 Bastien Guerry
Distributed under the Eclipse Public License 2.0.
