Self-hosted service
achannarasappa/ticker avatar
achannarasappa/ticker

Ticker Tracks Stock and Crypto Positions from a Terminal Window

Track stocks, crypto, and derivatives prices and positions in real time from your terminal

6,241 stars342 forksGoGPL-3.0

At a glance

What is it?
Ticker is a Go terminal application that displays live stock, crypto, and derivatives prices next to the positions a user configures, refreshing on a plain interval rather than a push feed.
Who is it for?
Ticker suits an engineer or trader who wants a live watchlist and position P&L inside a terminal already open for other work, not someone who needs order execution, which is nowhere in its documented flags. Install through brew, winget, or the Docker image for the simplest upgrade path, and skip the snap package unless the extra --config $HOME/ticker.yaml step and the snap connect command are acceptable.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 93 days ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Refreshing quotes on an interval instead of streaming

Ticker's core interaction is a refresh interval, not a live socket. The default interval flag, aliased -i, sets the seconds between quote pulls and defaults to 5, so a watchlist redraws the terminal every five seconds rather than reacting to a push from an exchange. The watchlist flag, aliased -w, takes a comma-separated list of symbols, and running ticker -w NET,AAPL,TSLA starts a live watchlist for Cloudflare, Apple, and Tesla with no config file at all. Ticker tracks stocks, crypto, and derivatives prices and positions in real time from a terminal, and its feature list adds support for pre and post market quotes and for multiple cost basis lots per symbol, neither of which the plain three-symbol quick start shows. Someone who wants a live profit and loss number without a browser tab is the intended user. The show-positions flag layers weight, average cost, and quantity onto the same display, and show-summary adds total day change and total value, so the same binary serves both a bare price ticker and a fuller position dashboard depending on which flags are set.

A symbol suffix decides which of three sources answers

Every symbol ticker resolves goes through a source suffix. With no suffix, a symbol defaults to Yahoo Finance. A .X suffix marks a ticker-specific shorthand symbol, meant to be shorter than the canonical name, such as SOL.X in place of Solana's SOLANA.CG; the full list of these shorthand symbols lives in a separate ticker-static repository's symbols.csv file, populated from the top cryptocurrencies by Coinbase trading volume at the time of the update. A .CB suffix routes the lookup to Coinbase directly, found by searching the asset on Coinbase's own site, for example STRK-USD for Starknet on the advanced trade page. The example config file also shows a futures contract symbol, BIT-30MAY25-CDE.CB, priced through Coinbase. Three sources, one suffix convention, and no fourth one documented anywhere in the project.

Installing the binary and watching a first symbol

Several install paths sit ahead of a plain binary download from the releases page. On macOS or Linuxbrew:

sh
brew install achannarasappa/tap/ticker

This pulls from the project's own tap rather than core Homebrew. On Windows:

code
winget install -e --id achannarasappa.ticker

Docker needs no local binary at all:

sh
docker run -it --rm achannarasappa/ticker

Because the container has no home directory of its own, a config file has to be bind-mounted in with -v ~/.ticker.yaml:/.ticker.yaml. After install, a first run needs nothing but a watchlist flag:

sh
ticker -w NET,AAPL,TSLA

This draws a live grid of three symbols refreshing every 5 seconds, the CLI default. There is no separate init or login step: ticker has no account system, since every price source in the documented flags, Yahoo Finance and Coinbase, is queried without authentication.

Cost basis lots and the gain or loss they compute

A ~/.ticker.yaml file is optional; ticker runs with the quick-start flags alone. When the file exists, its lots list drives the gain or loss math: each entry names a symbol, a quantity, and a unit_cost, and an optional fixed_cost line, commented in the example config as a brokerage commission, adjusts the basis further. The example config carries two separate ARKW lots at different unit costs, 152.25 and 145.35, to show that the same symbol can appear more than once when it was bought at different prices; ticker sums them into one position. Quantities can be negative, standing in for closed positions through position netting, short positions, or borrowed assets, all handled the same way in the lots list. Any symbol that appears only in lots and not in the top-level watchlist is added to the watchlist implicitly, so a position never goes untracked. The config file itself can live in the home directory, the current directory, or the XDG config home path, three lookup locations before ticker falls back to defaults.

Groups: cycling watchlists with a single key

Larger watchlists can be split into named groups under a groups property in the same YAML file. Pressing TAB while ticker is running cycles forward through the groups, and SHIFT+TAB cycles back, switching which set of symbols is drawn without restarting the process. Any watchlist or lots entries left at the top level of the config, outside a named group, are collected into a group called default, which is always shown first regardless of where it appears in the file. Ordering elsewhere follows the order the groups are written in the config, not an alphabetical sort, unless --sort alpha is also set on the command line.

The snap package cannot reach the default config path

The snap package changes how the config file has to be addressed. Snap's sandbox does not allow access to dotfiles, so snap users have to set the config path explicitly with --config $HOME/ticker.yaml, dropping the leading dot that every other install method uses at ~/.ticker.yaml. Anyone who installs through sudo snap install ticker also has to run sudo snap connect ticker:ticker-config before the config plug works at all, a step the brew, winget, and Docker paths do not need. A separate note flags the MacPorts path as third-party maintained and warns it may lag behind the latest release, so a MacPorts install is a weaker guarantee of currency than the binaries on the project's own releases page.

GPL-3.0 licensing and a two-month release cadence

Ticker is licensed GPL-3.0, according to the repository's license field, a copyleft license: anyone who distributes a modified binary has to release that modification's source under the same terms, which matters more for a team that forks the project than for one that only runs the prebuilt release. The repository's last push was on 2026-06-28. The three most recent tagged releases are v5.3.0 on 2026-06-21, v5.2.1 on 2026-04-27, and v5.2.0 on 2025-12-28, a cadence of roughly one tag every two months over that span. Upgrading is a binary swap for anyone installing from the releases page, brew, or winget; snap and Docker users pull whatever tag those channels have published, and the MacPorts warning means that path can sit further behind the tagged releases.

A browser tab from a broker is the low-effort alternative

The alternative most people already use is a brokerage's own web app or a financial site, checked in a browser tab. That path needs no install and no YAML file, but it means switching windows, staying logged into an account, and losing the terminal-native workflow ticker is built around. Ticker trades that convenience for a process that reads unauthenticated data sources, Yahoo Finance by default plus Coinbase and ticker's own shorthand list for the .X suffix, and draws them into whatever terminal is already open next to a shell or an editor. Order placement and trade execution are absent from its documented flags; ticker only reads and displays prices and positions, so it cannot replace a broker's app for anyone who needs to act on a quote, only for someone watching one.

Editorial conclusion

Ticker suits an engineer or trader who wants a live watchlist and position P&L inside a terminal already open for other work, not someone who needs order execution, which is nowhere in its documented flags. Install through brew, winget, or the Docker image for the simplest upgrade path, and skip the snap package unless the extra --config $HOME/ticker.yaml step and the snap connect command are acceptable. Check the license first: GPL-3.0 requires releasing source for any distributed fork, a real constraint for a team building a modified internal version rather than just running the release binary.

Frequently asked questions

Does ticker require a config file to run?

No. Running ticker -w NET,AAPL,TSLA starts a live watchlist with no ~/.ticker.yaml file present; the config file is only needed to persist a watchlist or to set cost basis lots.

How does ticker get crypto prices like Solana or Starknet?

By symbol suffix: a plain symbol defaults to Yahoo Finance, a .X suffix uses ticker's own shorthand list of top cryptocurrencies by Coinbase volume, and a .CB suffix looks the symbol up directly on Coinbase.

Why does the snap version of ticker need an extra command?

Snap's sandbox blocks access to dotfiles, so snap users have to run sudo snap connect ticker:ticker-config and point to the config file with --config $HOME/ticker.yaml instead of the default ~/.ticker.yaml path.

Can ticker show a loss or gain on a stock position?

Yes, through the lots section of the config file: each lot lists a symbol, quantity, and unit_cost, and an optional fixed_cost for commissions, which ticker uses together with --show-positions to compute gain or loss.

What license is ticker released under?

GPL-3.0, according to the repository's license field, which means anyone distributing a modified version of ticker has to release that modification's source code under the same license.

Official sources

  1. achannarasappa/ticker on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/achannarasappa-ticker.svg)](https://hysenlabs.com/projects/achannarasappa-ticker)