README.md

June 8, 2026 · View on GitHub

showMe — a financial terminal for macOS

License: MIT Platform: macOS ARM64 Shell: Tauri 2 UI: React 18 Engine: Python 3.11+ Latest release

A financial terminal for macOS. Type a short code, get an analyst function — about 138 of them, from company financials to options gamma to central-bank rate odds. Open source, runs entirely on your own machine, no subscription, no broker lock-in.

What is it · Preview · How it works · Functions · Honesty · Get started · Architecture

What is showMe?

showMe is a desktop financial terminal for macOS. Instead of hunting through menus, you drive it the way professional desks do: type a short function code into a command line and the matching analyst tool opens — FA for financial statements, GEX for options gamma exposure, WIRP for rate-hike odds, ECO for the economic calendar. There are about 138 functions spanning equities, options, bonds, FX, commodities, macro, news, and portfolio analytics.

It's the kind of professional terminal workflow you'd otherwise pay for in a Bloomberg Terminal — rebuilt as open source, running entirely on your own Mac, with no subscription and no broker lock-in.

Under the hood: a thin Tauri 2 (Rust) shell with a signed updater, a React + Vite UI, and a unified Python (FastAPI) sidecar that runs the function engine locally. Your data and keys never leave the machine.

Preview

Cockpit

showMe cockpit: a sector heat strip across the top, KPI tiles for headline indices, a daily brief and risks pane, a forecast gauge, a watchlist with price/change/spark cells, and a left sidebar listing analyst functions

Command palette — every function, one keystroke away

The function command palette open over the cockpit, listing function codes (GEX, NG, CPF, ESG, …) with their full names, filtered as you type

A function in context

A single-symbol function view for SPX showing the data-quality header, source pills, and a fielded layout

How the terminal works

showMe has one core idea: a command line for markets. Press the palette shortcut, type a short code, hit enter — the function opens as a pane. No two functions look the same, because each is a purpose-built tool, but they all share the same launch gesture. If you know the code you want, you're one keystroke away; if you don't, the palette filters by name as you type.

A taste of the breadth — twelve representative codes:

CodeFunctionWhat it shows
FAFinancial AnalysisIncome statement, balance sheet, cash flow
DCFDiscounted Cash FlowIntrinsic-value model from projected free cash flow
GEXGamma ExposureDealer hedging structure across the option chain
OMONOption MonitorSingle-name option chain with Greeks
WIRPWorld Interest Rate ProbabilityMarket-implied rate-hike / cut odds
YASYield & Spread AnalyticsBond yield, spread, and curve positioning
ECOEconomic CalendarUpcoming macro releases and prints
CORRCorrelation MatrixCross-asset correlation grid
PORTPortfolio AnalyticsHoldings, exposure, and performance
ESGESG ScoresEnvironmental / social / governance ratings
GMMGlobal Macro MoversWhat's moving across global macro
BRIEFDaily BriefA composed morning read across your surfaces

Function catalog

About 138 functions across 14 categories. The exact set evolves; run npm run audit:functions for the live list. A representative slice by category:

Show the function catalog

Equities & fundamentalsFA financials · DCF / DDM discounted cash flow · DCFS DCF sensitivity · RV relative valuation · WACC cost of capital · BETA CAPM beta · EE earnings & estimates · EREV earnings revisions · ANR analyst recommendations · DVD dividends & splits · HDS holders · HFS holder search · FORM4 insider transactions · DARK / DPF dark-pool volume · CACT corporate actions · FTS SEC full-text search · PIB public information book · DES description · EQS equity screener.

Options & derivativesGEX gamma exposure · OMON option monitor · OVME option valuation (Black-Scholes + Greeks).

Bonds & ratesYAS yield & spread · CRVF yield curve · GC3D 3-D yield curve · WB world bonds · SRSK sovereign risk · TAUC Treasury auction calendar · CRPR credit-rating profile.

FXFXH FX hedge · FXFC FX forecasts.

Commodities — oil, natural gas, metals and weather-linked commodity functions (BOIL, NGAS, GLCO, WETR, …).

Macro & economicsECO economic calendar · ECST economic statistics · ECFC economic forecasts · WIRP rate-probability · GMM global macro movers · REGM market regime · BTMM country rate environment · COUN country guide · TRDH trading hours.

News & intelligenceTOP top news · CN company news · NI news by topic · BRIEF daily brief · TLDR daily TL;DR · NSE news search · SOSC social sentiment · TRAN earnings-call transcripts · TRQA transcript Q&A · TSAR transcript sentiment · EVTS corporate events · NALRT critical news alerts · READ reading list · AV audio/video archive.

Portfolio & riskPORT portfolio analytics · PORT_OPT optimizer · CORR correlation matrix · GREEKS portfolio Greeks · PVAR position VaR / MCR · STRS stress test · PFA performance attribution · BLAK Black-Litterman · RPAR risk parity · REBA rebalancer · PSC position sizing · TLH tax-loss harvesting · LOTS tax lots · MGN cross-account margin · ACCT multi-account aggregation · PCAS PCA factor stress · MLSIG ML signal · BMTX backtest matrix · BTFW walk-forward · BTUNE auto-tuner.

Screen & mapsSECT sector heatmap · ICX index constituents · MAP world market heatmap · MICRO market microstructure · FRH funding-rate heatmap.

Trade executionEXEC execution monitor · TCA trade-cost analysis · EMSX execution management.

Reference & dataISIN symbol cross-reference (OpenFIGI) · FLDS field lookup · DAPI data API · BQL query language · BQUANT notebook.

Alt-data & alertsONCH on-chain metrics · WHAL whale alerts · POLY Polymarket · SAT satellite imagery · ALRT alerts · CDE custom data fields.

Honest by design

A finance tool is only as trustworthy as the data behind it, so showMe is explicit about provenance.

  • Data-mode pills. Every function pane labels where its numbers came from — live exchange/vendor data, delayed reference data, or a modeled value (e.g. option Greeks computed from a pricing model).
  • Strict-zero gate. When a live source is unavailable, a function shows a PROVIDER_UNAVAILABLE state instead of inventing plausible-looking fake data. No silent fakery.

What showMe is — and isn't

✅ It is❌ It isn't
A local, open-source financial terminalA live-money broker by default — execution is paper trading out of the box
macOS (Apple Silicon) native appCross-platform — there is no Windows/Linux/Intel build
100% local — your data and keys stay on the machineA cloud service — there are no showMe servers
MIT-licensed, free, no subscriptionInvestment advice or a guarantee — provided as-is, no warranty

Architecture

flowchart LR
    user(["You"]) -->|type a function code| react
    subgraph shell["Native shell"]
      tauri["Tauri 2 / Rust<br/>lifecycle · tray · menubar<br/>signed updater · Keychain"]
    end
    subgraph ui["UI process"]
      react["React + Vite + Tailwind<br/>zustand store<br/>command palette · i18n (12 langs)"]
    end
    subgraph backend["Python sidecar"]
      fastapi["FastAPI<br/>/api/health · /function-index · /fn/*"]
      engine["Function engine<br/>~138 functions · 14 categories"]
      data["Data layer<br/>providers · data-mode tagging"]
    end
    react -->|IPC| tauri
    tauri -->|spawn + HTTP| fastapi
    react -->|fetch JSON| fastapi
    fastapi --> engine --> data

    classDef shellNode fill:#dc572115,stroke:#dc5721,color:#dc5721
    classDef uiNode fill:#61dafb15,stroke:#61dafb,color:#1f6feb
    classDef beNode fill:#1f6bff15,stroke:#1f6bff,color:#1f6bff
    class tauri shellNode
    class react uiNode
    class fastapi,engine,data beNode

The Tauri shell discovers the sidecar's port from a single stdout line (SIDECAR_PORT=<u16>), restarts it up to 3× with exponential backoff on failure, and tears it down with a SIGTERM → 5 s grace → SIGKILL on quit. The WKWebView stays presentation-only; all native chrome (menubar, tray, dock, deep links, hotkeys, biometric unlock) lives in Rust.

Tech stack

LayerStack
Native shellTauri 2 (Rust), code-signed .app + .dmg, signed updater
UIReact 18 · Vite 5 · Tailwind 4 · zustand 5 · TypeScript 5 · lightweight-charts 5
BackendPython 3.11+ · FastAPI · Uvicorn · pydantic 2 · DuckDB · Polars
PackagingPyInstaller (arm64 onedir sidecar)

Data sources

Most functions pull keyless, public data; a few are opt-in and need a key.

ProviderUsed for
yfinanceEquities, ETFs, FX, commodities, bonds — OHLCV and quotes
BinanceCrypto spot and perpetuals
FREDMacro time series
SEC EDGARFilings and full-text search
GDELTGlobal news / events
OpenFIGIIdentifier cross-reference (ISIN / CUSIP / ticker)
Treasury DirectUS Treasury auctions
RSS feedsConfigurable news

AI features (opt-in)

These are off by default and each needs its own model or key:

FeatureWhat it doesNeeds
FinBERT sentimentScores news headlines positive / neutral / negativeBundled model (first call loads it)
Whisper transcriptionTurns earnings-call audio into textLocal Whisper model
X / social sentimentSentiment on posts mentioning a tickerYour X API key
LLM assistantA conversational analyst over your dataOpenAI key or a local Ollama model

Get started

Download

Grab the latest signed build from Releases (showMe_0.1.1_aarch64.dmg, macOS Apple Silicon).

Run from source (dev)

# 1 — UI deps
cd ui && npm install && cd ..

# 2 — sidecar deps
cd backend && python3 -m pip install -e ".[dev]" && cd ..

# 3 — run dev (Tauri spawns the sidecar + UI together)
npm run tauri:dev

No Rust toolchain? Inspect the UI in the browser:

# terminal 1
cd backend && python3 -m showme.server --port 8765
# terminal 2
cd ui && npm run dev        # http://localhost:5173

Build a native bundle

bash packaging/build_sidecar.sh   # PyInstaller arm64 sidecar
npm run tauri:build               # .app + .dmg

Signing and notarization (optional, needs Apple credentials) live in packaging/sign.sh and packaging/notarize.sh.

Project layout

Show the directory tree
showMe/
├── tauri/        Native macOS shell (Rust): lifecycle, tray, menubar, deep-link, biometric
├── ui/           React + Vite + Tailwind + zustand frontend
│   └── src/      shell · panes · functions · command-palette · i18n (12 langs) · design-system
├── backend/      Python FastAPI sidecar + function engine
│   └── showme/   server · function_contracts · providers · brokers · agents
│       └── engine/functions/   the ~138 functions, in 14 category folders
├── packaging/    build / sign / notarize / dmg
├── scripts/      audits & dev tools (npm run audit:functions, …)
├── tests/        cross-cutting Playwright e2e
└── docs/         architecture, screenshots, specs, plans

Development & testing

npm run test:backend          # backend pytest suite
npm --workspace ui test       # UI vitest suite
npm run test:e2e:smoke:fast   # fast Playwright smoke path
npm run audit:functions       # live function inventory
npm run lint && npm run lint:py

Contributions welcome — see CONTRIBUTING.md and SECURITY.md.

License

MIT © 2026 Nazmi Efe Armutcu. Provided as-is, with no warranty. Not investment advice.