Personal CLI dashboard. Bash. macOS + brew only. Refreshes itself.
brew install coreutils gh git jq ankitpokhrel/jira-cli/jira-clirequirements.sh prints the exact command if anything is missing.
export GH_TOKEN="<github token>"
export JIRA_API_TOKEN="<atlassian api token>"
export JIRA_HOST="https://<your-org>.atlassian.net"
jira init # one-time, writes ~/.config/.jira/.config.ymlCheck out the latest release tag to make full use of the new version available feature — sitting on the tag keeps the in-dashboard version indicator discreet (running on master past a tag flags as outdated).
git clone https://github.com/JReko/cli-dashboard.git
cd cli-dashboard
git checkout "$(git tag --sort=-v:refname | head -n 1)"
./dashboard.shUpgrade: git fetch --tags && git checkout "$(git tag --sort=-v:refname | head -n 1)".
Defaults live in config.sh. For personal tweaks, create config.local.sh
next to it — it's gitignored and sourced last, so anything you set there
overrides the defaults without dirtying git status.
# config.local.sh
DASHBOARD_REFRESH_MINUTES=1
COMPONENT_JIRA=falseToggles:
DASHBOARD_REFRESH_MINUTES— refresh interval (0= render once, exit)DASHBOARD_DEMO=true|false— render mock payloads instead of hitting APIsCOMPONENT_<NAME>=true|false— enable/disable a componentFEATURE_<COMPONENT>_<NAME>=true|false— enable/disable a single feature
Honors NO_COLOR=1 and UI_NO_NERDFONT=1.
The status bar appends the running version (from git describe --tags) and
compares it to the latest GitHub release. On the latest tag it stays discreet;
when behind it shows ⚠ <current> → <latest>. Toggle with
COMPONENT_VERSION / FEATURE_VERSION_UPDATE_CHECK.
dashboard.sh entry point + render loop
config.sh toggles
requirements.sh startup dep + env validation
lib/ui.sh colors, icons, hyperlink + section helpers
lib/demo.sh fake payloads used when DASHBOARD_DEMO=true
components/<name>/
<name>.sh orchestrator: sources features, exposes <name>_render
<feature>.sh one feature, one public <component>_<feature>_check fn
mkdir components/<name>- Create
components/<name>/<feature>.sh— public fn<name>_<feature>_check - Create
components/<name>/<name>.sh— sources feature(s), gates each withconfig_enabled FEATURE_<NAME>_<FEATURE> - Add
COMPONENT_<NAME>=trueandFEATURE_<NAME>_<FEATURE>=truetoconfig.sh - Source the orchestrator from
dashboard.shand call<name>_rendergated onCOMPONENT_<NAME> - If new external CLI / env var: add to
requirements.sh - Add a
demo_<name>_<feature>_payloadmock tolib/demo.shand branch the feature onconfig_enabled DASHBOARD_DEMO shellcheck -x dashboard.sh config.sh requirements.sh lib/*.sh components/**/*.sh
