A terminal app for tracking crypto prices and candlestick charts in real time. Uses Binance public data—no account or API keys needed. Just download and run.
- Live prices — Multiple symbols (e.g. BTC, ETH) in one view
- Candlestick charts — Configurable intervals (1m, 5m, 1h, 1d, etc.)
- Runs in your terminal — No browser required
- Configurable — Add/remove symbols and change settings from the in-app menu or config file
You need: a terminal (Terminal.app, PowerShell, Windows Terminal, etc.). Nothing else.
-
Open Releases and download the file for your system:
I use… Download this file Windows (most PCs) gopto-windows-amd64.exeWindows (ARM, e.g. some tablets) gopto-windows-arm64.exemacOS (Intel) gopto-darwin-amd64macOS (Apple Silicon M1/M2/M3) gopto-darwin-arm64Linux (x86_64) gopto-linux-amd64Linux (ARM64) gopto-linux-arm64 -
Run it:
- Windows: Put the
.exesomewhere (e.g. Desktop or a folder). Open a terminal in that folder and run:(You can rename the file to.\gopto-windows-amd64.exegopto.exeif you like.) - macOS / Linux: Move the file to a folder (e.g.
~/binor/usr/local/bin). In a terminal:To install for all users on Linux/macOS (optional):chmod +x gopto-darwin-arm64 # or gopto-linux-amd64, etc. ./gopto-darwin-arm64sudo mv gopto-linux-amd64 /usr/local/bin/gopto && sudo chmod +x /usr/local/bin/gopto, then rungoptofrom anywhere.
- Windows: Put the
That’s it. On first run, Gopto creates a config file with defaults and connects to Binance. Press m to open the menu (add symbols, settings, etc.).
- First run: A config file is created at
~/.config/gopto/config.yaml(on Windows:%USERPROFILE%\.config\gopto\config.yaml) with default symbols (e.g. BTC, ETH). The app will connect and show live prices and charts. - Override config path: Run with
--config /path/to/config.yaml(or--config C:\path\to\config.yamlon Windows).
You can edit the config file to change default symbols and settings. Defaults look like this:
binance:
symbols: "BTCUSDT,ETHUSDT"
settings:
kline_interval: "1m"
kline_limit: 60
x_axis_steps: 6
y_axis_steps: 2
kline_refresh_interval_sec: 60
redraw_interval_sec: 1
stale_threshold_sec: 15
reconnect_delay_sec: 5
max_symbols: 4
menu_key: "m"| Key | Action |
|---|---|
m (or your menu_key) |
Open menu |
| q / Ctrl+C | Quit |
| ↑ / ↓ or j / k | Move selection (grid) |
| f / Enter | Focus one symbol (full panel) / Unfocus |
| i | When focused: change kline interval for that symbol |
| Esc | Unfocus or close interval editor / unhighlight selection |
- Add symbol — Add a trading pair (e.g.
solusdt). Only symbols that exist and are tradeable on Binance are accepted. - Delete symbol — Remove a symbol from the list.
- Settings — Edit kline interval, limits, axis steps, refresh intervals, reconnect delay, max symbols, menu key. Changes are written to your config.
- Config path — Show path to the config file.
- Reset to defaults — Reset all settings to built-in defaults.
| Setting | Description | Example |
|---|---|---|
kline_interval |
Default candle interval | 1m, 5m, 1h, 1d |
kline_limit |
Number of candles to fetch | 60 |
x_axis_steps |
Chart X-axis (time) tick steps | 6 |
y_axis_steps |
Chart Y-axis (price) tick steps | 2 |
kline_refresh_interval_sec |
How often to refetch klines | 60 |
redraw_interval_sec |
How often to redraw the chart | 1 |
stale_threshold_sec |
After this many seconds without data, show “Disconnected” | 15 |
reconnect_delay_sec |
Delay before reconnecting WebSocket after disconnect | 5 |
max_symbols |
Max symbols shown in grid | 4 |
menu_key |
Key to open menu | m |
Per-symbol intervals can be set from the TUI (focus symbol → i → type interval → Enter). They are stored under symbol_intervals in config.
.
├── cmd/ # CLI entry (Cobra)
├── config/ # Config load/save, defaults
├── internal/
│ ├── crypto/ # Binance client, WebSocket, klines
│ └── tui/ # Bubble Tea model, charts, menu, layout
├── main.go
├── config/defaults.yaml
└── go.mod
- Bubble Tea — TUI framework
- Lipgloss — Styling
- ntcharts — Time-series line/candle charts
- go-binance — Binance REST + WebSocket
- Viper + Cobra — Config and CLI
If you prefer to build from source (e.g. to contribute or use the latest unreleased code), you need Go 1.21+.
Linux / macOS:
git clone https://github.com/theoldzoom/gopto.git
cd gopto
make build
make install # optional: install to /usr/local/bin/gopto (requires sudo)Then run ./build/gopto or gopto if you ran make install.
Windows:
git clone https://github.com/theoldzoom/gopto.git
cd gopto
go build -o build\gopto.exe .Run build\gopto.exe.
To build binaries for all platforms and upload them to a new release:
- Run
make build-all. This produces inbuild/:gopto-linux-amd64,gopto-linux-arm64gopto-darwin-amd64,gopto-darwin-arm64gopto-windows-amd64.exe,gopto-windows-arm64.exe
- Create a new release on GitHub and attach these six files (or the subset you want to publish).
Use make clean to remove the build/ directory.
Contributions are welcome. To get started:
-
Fork and clone the repo, then run locally:
git clone https://github.com/your-username/gopto.git cd gopto go run main.go -
Open an issue for bugs or feature ideas so we can align before you invest time in a large change.
-
Submit a PR when you’re ready:
- Branch from
master, keep changes focused (one feature or fix per PR). - Run
go fmt ./...and ensure the project still builds (make build). - In the PR description, briefly explain what changed and why.
- Branch from
-
Code style — Follow existing style in the repo; use
go fmtand the same patterns as ininternal/tuiandinternal/crypto.
MIT. See the file for more information.
