██╗ ██╗███████╗██╗ ██████╗ ██╗ ██╗ ██╗
██║ ██║██╔════╝██║██╔════╝ ██║ ╚██╗ ██╔╝
██║ █╗ ██║█████╗ ██║██║ ███╗██║ ╚████╔╝
██║███╗██║██╔══╝ ██║██║ ██║██║ ╚██╔╝
╚███╔███╔╝███████╗██║╚██████╔╝███████╗██║
╚══╝╚══╝ ╚══════╝╚═╝ ╚═════╝ ╚══════╝╚═╝
a terminal weight tracker for people who are too lazy to open a spreadsheet but disciplined enough to open a terminal
weigly is a tiny, fast, opinionated weight tracker that lives entirely in your terminal.
You open it, it shows you your progress. You log your weight, it shows you your progress. That's it. No account, no cloud, no subscription, no app that somehow costs $9.99/month for a graph and a sad emoji.
It draws a proper braille-dot chart, a sparkline, and optionally a little ASCII figure of you — that gets visibly thinner as you get closer to your goal. Because you deserve visual feedback that isn't a boring number.
- Braille line chart — the highest resolution you can get in a terminal, courtesy of ratatui
- Sparkline — compact at-a-glance trend for the last N days
- Mood face — 5 expressions from
(>.<)at the start to(*O*)at goal — honest feedback, no gym selfies required - Day tags — mark workout days (
--wo) and cheat days (--cheat) directly on the chart - Multi-user profiles — track yourself and whoever else lives with you
- True-color theming — any
#rrggbbhex value, pairs beautifully with catppuccin, nord, gruvbox - XDG-compliant storage — plain CSV + TOML, no database, fully portable
- Single static binary — ~2.5 MB, zero runtime dependencies, installs in seconds
git clone https://github.com/micrus/weigly
cd weigly
cargo install --path .That's it. The weigly binary lands in ~/.cargo/bin/, which should already be in your $PATH if you have Rust installed.
Don't have Rust?
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"# Remove the binary
cargo uninstall weigly
# Remove your data and config (optional — your data, your choice)
rm -rf ~/.config/weigly
rm -rf ~/.local/share/weiglyThat's a clean slate. No leftover daemons, no registry entries, no feelings.
First run auto-detects that you're new and walks you through a short setup:
weigly Welcome to weigly! Let's get you set up.
Your name: Michele
Unit (kg/lbs): kg
Goal weight (kg): 75
Nice! Profile saved. Now log your first weight:
weigly log <weight>
Then log your first weight:
weigly log 82.5And from now on, just run weigly to see your recap.
weigly # show your progress recap
weigly log 78.5 # log today's weight
weigly log --wo # today was a workout day (no weight needed)
weigly log --cheat # cheat day — logged, no judgment
weigly log 78.5 --wo --cheat # weight + both tags (you monster)
weigly init # reset and reconfigure your profile
weigly --user girlfriend # use a different profile
weigly --no-art # hide the mood face (minimalist mode)
weigly --help # show all optionsMichele ▸ 79.2 kg → goal 75.0 kg (−4.2 to go)
████▇▇▆▆▆▅▅▄▄▄▄▃▃▃▂▂▂▁▁▁▁▁▁▁▁▁▁ ← sparkline (lower = lighter = taller bar)
82.5 ┤╮
│╰─╮
80.0 ┤ ╰──╮ W
│ ╰──╮
78.0 ┤ ╰─● ← you are here
·····················── goal (75.0 kg)
Apr 01 Apr 12
W = workout
(^_-) ← getting there
---
Every profile is fully isolated — its own config, its own log, its own goal, its own figure, its own theme.
# Set up a second profile
weigly init --user girlfriend
# Log for that profile
weigly --user girlfriend log 63.0 --wo
# View that profile's recap
weigly --user girlfriendProfiles are stored at ~/.config/weigly/profiles/<name>.toml and logs at ~/.local/share/weigly/logs/<name>.csv.
weigly uses true-color (#rrggbb) for everything. Edit your profile config to match your terminal aesthetic:
# ~/.config/weigly/profiles/default.toml
[theme]
accent = "#cba6f7" # your name and headers
chart_line = "#89b4fa" # the weight line
goal_line = "#a6e3a1" # the goal line
text_dim = "#6c7086" # axis labels and secondary text
art_color = "#f38ba8" # the ASCII figureBuilt-in palettes (just swap the colors):
| Theme | Preview |
|---|---|
| catppuccin-mocha | #cba6f7 #89b4fa #a6e3a1 #6c7086 #f38ba8 |
| nord | #88c0d0 #81a1c1 #a3be8c #4c566a #b48ead |
| gruvbox | #d3869b #83a598 #b8bb26 #928374 #fb4934 |
Your data is plain CSV — no binary blobs, no databases, no proprietary format.
date,weight,tags
2026-04-10,82.5,
2026-04-11,82.1,wo
2026-04-12,81.8,wo:cheat
2026-04-13,,wo
You can edit it, back it up, import it, export it, graph it in Python, or just read it. It's yours.
MIT. Do whatever you want with it.
built with Rust and a mild distaste for fitness apps
