Own your investment data.Then put it to work.

Pyx pulls everything you hold into one encrypted database on your machine, then hands you the tools to actually use it: a real chart workspace, tags, markdown notes, transaction analysis, honest returns, and any AI you choose. All of it reads your database. None of it reads anyone else's.

Free. No account, no cloud, and no card until you connect a broker. Brokerage sync is $7 a month or $70 a year. In beta on macOS, Windows, and Linux.

§ · use cases

At a glance, then as deep as you like.

Pyx opens to the numbers that matter and keeps the research a keystroke away: a decade of financials on any company, peers against your own tags, charts, notes, transactions, honest returns. All of it on your machine, all of it yours to use directly.

Optional. Pyx ships no model and no chatbot. If you already use an agent, it can work from the same database and the same research store, with eight built-in skills it can run as prompts.

your agent · read-only · local socket

What were my biggest movers this month?

vialist_holdingsget_price_history

§01 · overview

One portfolio. Every angle on it.

Pyx opens to the whole picture and keeps every other view one keystroke away. The sidebar is the map: pinned tickers and charts, the companies you researched last, Holdings, Allocation, Performance, Notes, saved charts, and your tags, with a full research page behind every ticker. One database underneath, many ways to read it.

$384,913.07+$2,184.41 (+0.57%)todayPINNEDAAPLApple Inc.KOThe Coca-Cola Co...Core HoldingsRESEARCHRecentMCOMoody's Corporat...CVXChevron Corporat...DVADaVita Inc.OVERVIEWHoldingsAllocationPerformanceNotesCHARTSCore HoldingsAAPL, AXP, KOEnergy WatchTAGSCoreDividendMoatEnergyPyxSynced 16:12Type a command...⌘KOverviewFri Aug 14 · quotes as of 1m agoDefaultFocusResearchTOTAL VALUE$384,913.07+$2,184.41 (+0.57%)Cash Holdings$53,901.07Unrealized G/L+$87,310.45 (+35.83%)Realized G/L+$12,406.80Cost Basis$243,701.55Holdings12PerformanceValueReturn1M3M6MYTD1YALL$320.0K$350.0K$380.0KMar 16May 13Jul 10PERIOD+18.60%ANNUALIZED+40.66%MONEY-WEIGHTED+38.94%MAX DRAWDOWN-6.42%Allocationby asset class$384,913.07TOTALCash14.0%Equity80.0%ETF6.0%Market snapshotClosedSPY630.41+0.56%QQQ562.18+0.74%IWM231.85-0.12%^VIX15.42-3.21%^TNX4.21+0.48%Holdingstop movers todayBy account ▾⌘2AAPLApple Inc.$84,739.07+1.81%+92.06%OXYOccidental Petroleum Corpora...$18,536.67-1.30%-6.10%CVXChevron Corporation$27,805.01+1.12%+14.85%DVADaVita Inc.$7,944.29+1.10%+7.87%KHCThe Kraft Heinz Company$10,923.40-0.90%-10.32%AXPAmerican Express Company$61,568.23+0.62%+47.12%VOOVanguard S&P 500 ETF$23,170.84+0.57%+29.41%CBChubb Limited$10,592.38+0.48%+30.74%KOThe Coca-Cola Company$36,080.31+0.41%+25.98%1–9 of 11‹›TagsMoat4+1.18%Watch1+1.10%Core5+0.85%Dividend3+0.48%1–4 of 5‹›Income & eventsANNUAL INCOME$5,334.04YIELD ON COST2.19%AAPLEarningsAug 20AXPEarningsAug 21KOEarningsAug 25Recently reportedCVX10-Q filedAug 7OXY10-Q filedAug 6BAC10-Q filedJul 31MCO10-Q filedJul 23Recent activityDIVAAPLdividend+$69.81Aug 13BUYDVA12 sh @ $148.30-$1,779.60Aug 11INTCASHinterest+$184.12Aug 31–3 of 214‹›Last sync: 16:12:50● FX EUR · todayRefreshed 12 holdings
01 / 06

A dashboard you arrange.

One headline number over a grid of widgets: performance, allocation, holdings, tags, a market snapshot, income with upcoming earnings, and recent activity. ⌘E lets you drag, resize, or remove any card. The gear on each one picks its symbols, ranking, or breakdown. Start from the Default, Focus, or Research preset, and the layout is still there tomorrow.

Connect Fidelity, Schwab, Vanguard, Robinhood, Interactive Brokers, or any of the forty institutions SnapTrade supports, or import OFX, QFX, and CSV statements with no third party at all. Hold in dollars, euros, pounds, yen, or any of 36 currencies. Pick one base currency and every total converts at that day's FX rate, while prices and trades keep their own. Every value is computed locally from your own database.


§02 · privacy

The data never leaves.

Every other portfolio tool asks you to surrender the portfolio in order to see it. Pyx inverts that. A complete accounting of where your data can go:

On your machine

Everything. Holdings, transactions, history, and settings live in one database file on your disk, encrypted at rest by default. The key lives in the OS keychain, brokerage and license secrets sit in a second encrypted file under that same key, and both are zeroized in memory after use.

On our servers

Nothing. There is no Pyx cloud, no account, no login. We could not read your portfolio if we wanted to.

To third parties

Nine hosts, allowlisted in source: Yahoo Finance for market data and FX rates, SnapTrade for brokerage sync, SEC EDGAR for filings and fundamentals, the Pyx license check, and the update path. Any other outbound request is blocked and logged.

YOUR MACHINEportfolio dataone SQLite file, localbrokerage tokensencrypted file, key in OS keychainaudit logappend-only, human readableALLOWLIST · ONE FILE IN SOURCEquery1.finance.yahoo.commarket data, FX ratesapi.snaptrade.combrokerage sync, read onlydata.sec.govEDGAR filings, fundamentalslicense.pyx.financelicense checktelemetry · no host existsanalytics · no host existscrash reports · no host exists

The allowlist is a single file in the source code. No telemetry host exists in it, so even a bug could not phone home. The complete host list is published in the Privacy Policy.

privacy mode

Press ⌘⇧M and every amount disappears.

One keystroke masks every amount across the app, in any currency, for over-the-shoulder moments. Percentages stay visible, so the shape of the day survives. Persisted between sessions, also reachable from the command palette.

⌘⇧MTotal Value$384,913.07•••••••••••Cash Holdings$53,901.07•••••••Day Change+$2,184.41 (+0.57%)•••••••Unrealized G/L+$87,310.45 (+35.8%)•••••••

§03 · research

Any company, to the depth of the filing.

Type a ticker and the security page assembles a decade of fundamentals from SEC EDGAR and Yahoo: statements, growth, margins, multiples against their own history, peers, estimates, ownership, and the filing index. Held or not. Every number carries its source.

YTD ReturnAAPL+16.42%SPY+13.49%1Y ReturnAAPL+37.4%SPY+21.71%3Y ReturnAAPL+83.33%SPY+83.45%5Y ReturnAAPL+120.59%SPY+87.78%Price Chart1M3M6M1Y5YMAX$150.00$200.00$250.00$300.00Apr 22Nov 23Jun 25Mar 26May 03, 2024AAPL$262.75May 03, 2024$262.75Financial PerformanceSEC EDGAR + Yahoo · as of 1m agoChartTableCSVRevenueGross ProfitEBITDAOp IncomeNet IncomeEPSFCFGrowth & MarginsSEC EDGAR + Yahoo · as of 1m agoOverview›Apple Inc. (AAPL)Apple Inc.NasdaqGS: AAPLTechnologyHeldCoreMoat+ Tag$315.63↑ +1.81%Held 268.5 sh · Value $84,739.07 · Avg cost $164.32 · Gain +$40,619.07 (+92.1%) · Weight 22.0%Visit website ↗WINDOW1Y3Y5Y10YMaxAnnualQuarterlyTTMPEERSRelatedCoreMoat+ setLayout
01 / 05

Returns against your benchmark, then the position you hold.

YTD, one, three, and five year returns sit beside SPY or whichever benchmark you set. If you own the name, shares, average cost, gain, and weight appear before the first module. The control row above pins as you scroll and sets the window, frequency, and peer set for every module at once.

The same analysis, three places

Peer Comparison, the scatter, and the CSV export also live on every tag page, run against the tag's members. The Holdings table takes the valuation columns, and the holdings drawer carries the multiples and eight quarters of financials.

Every number has a source

SEC EDGAR and Yahoo, merged per period and cached locally. Hover a cell for the formula and its inputs. Right-click to copy the value, the row, the table, or the formula. Any EDGAR row opens the filing.

Your layout, pinned controls

Eleven modules, each collapsible, hideable, and reorderable, saved per user. One control row sets the window, the frequency, and the peer set for all of them, and stays pinned as you scroll.

Your notes live here too

Every note linked to the security, directly or through a tag, stacks in the Notes card, newest first. Generate brief writes a company brief from the data Pyx has cached, and if an agent wrote a note the caption says which one and when.

⌘K, a ticker, Enter. The page opens from any holding, tag member, peer row, or chart legend too, and Esc walks the breadcrumb back.


§04 · charts

A chart workspace, not a chart widget.

A multi-pane workspace with 8 chart types, 12 composable indicators, drawings that persist, and ranges from one day to max with custom calendar windows.

Core Holdings×AAPL, AXP, KOEnergy Watch+Candles▾FTfAAPL$315.63+37.4%EMA (20)RSI (14)×240270300AugOctDecFebAprJunRSI(14)64.77050301D5D1M3M6MYTD1Y5YMAXAAPLAXPKO% rebasedCorr (60d)×+200%+150%+100%+50%0.00%corr 0.55+180.45%+105.32%+45.18%'22'23'24'25'261D5D1M3M6MYTD1Y5YMAXlog scale available · drawings anchor to bars, not pixels⌘Z undo · ⌘S save workspace
8 chart types
LineCandlesHollow CandlesAreaBaselineLog LineOHLCBar
12 indicators
SMAEMAWMAVWAPRSIMACDBollinger BandsATRVolume MAOBVDrawdownRolling Correlation

Honest comparison

Percent-normalized mode rebases any set of series to a common start. Chart holdings, whole accounts, or any symbol together.

Multi-pane layouts

Up to 2×2. Each pane carries its own series, indicators, and drawings.

8 drawing tools

Anchored to bars and prices, not pixels, so they survive zoom, pan, and restarts. Full undo and redo.

Workspaces are files

⌘S saves the whole layout as a TOML file you own. ⌘O opens it later. The workspace is text, not a cloud object.


§05 · allocation

Your target-date fund is not one holding.

Regroup the whole portfolio by asset class, sector, region, or account type in one click. Lookthrough decomposes every fund into the regions and sectors inside it, using a dataset that ships with the app. The analysis never touches the network.

AllocationSummaryDetailedDonutBarTreemapAsset ClassSectorRegionAccount TypeTotal drift: 2.2%Exclude cashAXP18.6%BAC11.0%MCO4.0%CB3.2%VOOAAPL25.6%VOOKO10.9%KHCCVX8.4%OXY5.6%DVAVOOVOO shown decomposed into the sectors inside it. The lookthrough dataset ships with the app and works offline.SECTORVALUEWEIGHTDRIFTFinancial Services$130,749.7439.5%+1.8%Technology$94,007.4128.4%-1.4%Consumer Defensive$47,003.7014.2%+0.4%Energy$46,341.6814.0%-0.7%Healthcare$12,909.473.9%-0.1%Drift measured against your target weights in classifications.tomlTotal, cash excluded$331,012.00Portfolio$384,913.07

Five schemes

Sector, asset class, region, account type, and custom groupings you define in classifications.toml, hot-reloaded on edit.

Three views

Donut, treemap, and full-width bars, with drill-down and breadcrumbs at every level.

Targets and drift

Set target weights per category and see exactly where you sit over or under them.


§06 · performance

Deposits are not gains.

Pyx computes time-weighted returns with proper external cash flow handling, the way an institution would. A deposit moves your balance; it never inflates your return.

PerformanceValueReturnLineAreaEventsCompareBenchmarkAccountsAll accountsTime-Weighted+18.6%Money-Weighted+17.4%Max Drawdown-6.8%Volatility13.2%Sharpe1.84Alpha vs SPY+4.1%Dividends$3,412.60+ 11 more metrics ›+20.0%+15.0%+10.0%+5.0%-0.00%Mar 30, 2026Buy VOO4.500 sh @ $524.16Buy AAPL6.000 sh @ $291.40Div KO+$242.25Dec 15Jan 12Feb 09Mar 09Apr 13May 111D5D1M3M6MYTD1Y3Y5YMAXTop Movers1MAAPL+6.8%AXP+5.2%OXY-4.1%Money Flow6MBought$24,180.50Sold$6,210.50Net+$17,970.00Trades6MBUY VOO · 4.500Mar 30BUY AAPL · 6.000Mar 30SELL BAC · 20.000Mar 12Dividends6MWindow$3,412.60Trailing 12M$6,904.20Top payerKOPerformance details+18.6% (+$60,366.06)Time-Weighted

Events on the curve

Every buy, sell, and dividend is plotted where it happened. Hover a marker and the exact trades behind it appear, down to the share count and fill price.

Benchmark anything

Overlay any ticker as the benchmark. SPY by default, yours by setting.

Per-account focus

Multi-select accounts to compare them side by side or aggregate any subset, across the same ranges as the chart workspace.


§07 · transactions

Every transaction, on the record. And yours to take.

The full history in a virtualized table: filter by account, kind, date range, or free text, grouped or flat, sorted any way. Multi-year histories scroll without a stutter.

TransactionsExport CSVAll accountsAll kinds2026-02-01 → 2026-05-20Grouped/ filter free textDATEACCOUNTKINDSYMBOLQTYAMOUNT2026-05-15BrokerageBUYOXY25.000-$1,190.502026-05-11BrokerageDIVAAPL—+$80.602026-05-01Roth IRADIVKO—+$242.252026-04-22BrokerageSELLBAC60.000+$3,072.002026-04-10Roth IRABUYCB5.000-$1,439.502026-03-27BrokerageDIVBAC—+$199.802026-03-10BrokerageDIVCVX—+$290.702026-03-02BrokerageINTCASH—+$182.451,284 transactions · 8 match filtersexport contains exactly what you see

CSV of exactly what you see

Filter the table by account, kind, date range, or free text, then export. The CSV contains the filtered view, nothing more, nothing less. Or skip the spreadsheet and ask your agent: dividends by year, interest by account, every buy of one ticker.

The database is a file

Your entire history lives in one SQLite file on your disk. Nothing is locked behind an account you could lose access to.

One ledger, every kind

Buys, sells, dividends, interest, and cash movements share one ledger, so the record is complete, not just the trades.

An audit log you can read

Every sync, import, delete, and export is recorded in an append-only local log. You can always see what the app did to your data.


§08 · notes

Write down why you bought it.

Markdown notes that link to securities, accounts, tags, or the whole portfolio, and pin to your charts on the day you wrote them. Give one an end date and it becomes a range on the timeline. Every note is a plain markdown file in a folder you choose, so Obsidian, grep, and any editor can read it.

NOTES · MAR 14markdownTrimmed VGT, added to VXUSVGTVXUS#rebalanceWhyTech crossed 32% of the portfolio, 8 points over target.Sold 40 sh, moved the proceeds into VXUS at $61.80.**Watch:** does the drift come back by June?morningstar.com/rebalancing-bandsvgt-lots-march.csvVGT · 1Y+18.4%Trimmed VGT, added to VXUSMar 14 · notepinned beside your trades and dividends

A page, not a text box

Each note opens as a document: a borderless title, then a body with live markdown preview in the Obsidian style. Markers hide on every line except the one you are editing, lists nest with Tab, and the saved note stays plain markdown.

Linked to what it is about

One note can reference several tickers, an account, a tag, or the whole portfolio. Any symbol works, held or not. The note then surfaces everywhere the linked thing does, including the tag's own page.

A flag on the chart

Every note pins to its date on the charts of the securities it links, beside your trades and dividends. Write the thesis, then watch what the market did with it, on one timeline.

Findable, and writable by your agent

Filter the Notes list by any linked ticker, tag, or account. Attachments stay on your disk. And with the notes switch on, the AI you connect can write dated notes too: an outlook per holding, a prep note before earnings, a policy timeline on the chart.

Right-click a holding, a chart legend row, or a tag and choose Add note. The draft opens already linked to what you were looking at.


§09 · agents

Any AI. Your data. Your call.

Pyx ships an MCP server, not a chatbot. Bring whichever AI you already trust, Claude Code, Claude Desktop, Codex, a local model behind any MCP client, and put it to work on your actual portfolio and the research store behind it. It reads the database, runs the same financials and peer comparisons the app shows, writes research notes and tags when you allow it, and none of the conversation leaves your machine.

YOUR MACHINE · THE WHOLE CONVERSATION STAYS INSIDEYOUR AGENTClaude CodeClaude DesktopCodexor any MCP clientMCPover stdiopyx-mcpships inside the appUnix socketsame user onlyno TCP listener · no cloud relayPYX · SETTINGS → AI AGENTSPortfolio readread-onlyMarket researchquotes, financials, filingsNotesread and writeTagsread and writeApp controlnavigate, widget order21 tools · 8 skills · every call audit-loggedOFF BY DEFAULT · HOLDINGS AND TRANSACTIONS READ-ONLY AT THE SQLITE LAYER
$ claude mcp add pyx -- /Applications/Pyx.app/Contents/MacOS/pyx-mcp

One command connects Claude Code. Every other MCP client points at the same bundled bridge, copyable from Settings. Requires an active license, and works only while Pyx is running.

skills

Eight research workflows, shipped with the app.

Each skill is a tested, versioned workflow over the tools above: which calls to make, in what order, and how to write the result back as a research note linked to the company or tag, then put it on screen. Connected agents see them as prompts. Export writes them as Agent Skills folders for clients that keep skills on disk.

/pyx:company-dossierCompany dossierThe full institutional note: business, financials, valuation, ownership, risks, saved as research.
/pyx:forensic-reviewForensic filing reviewCross-check a company's filings against its reported numbers and surface accounting red flags.
/pyx:bull-bearBull and bear stress testArgue both sides of a thesis from Pyx's own numbers, ending in monitorable signposts.
/pyx:moat-analysisMoat analysisClassify a company's competitive advantage and test its durability against its own history and its peers.
/pyx:sector-reportSector reportMap an industry: the quantitative spine from Pyx, the market context from your own research.
/pyx:disruption-scanDisruption scanScore incumbents against challengers in an industry and name what would have to break first.
/pyx:portfolio-checkupPortfolio checkupConcentration, drift, performance, and tag hygiene across the whole portfolio.
/pyx:earnings-prepEarnings prepWhat to watch for each holding reporting soon, one section per name.

Every skill ends by saving a research document and opening it in the app. The portfolio checkup recommends and never changes a tag or a note unless you ask in that session.

A socket, not a service

Agents talk to Pyx over a local Unix socket, through a small bridge that ships inside the app. Nothing listens on the network, no relay sits in the middle, and the network allowlist gains zero hosts.

Five switches, twenty-one tools

Access is opt-in per capability: portfolio read, market research, notes, tags, and app control. Twenty-one tools cover the portfolio, performance, quotes, company profiles, a decade of financials, peer comparison, the filing index, notes, tags, and the view on screen. Each tool takes selectors, so a new metric is a new value, not a new tool.

Research from the same store the app reads

get_financials and list_filings read the fundamentals and filings Pyx already synced from SEC EDGAR and Yahoo, so they work offline and skip the research rate budget. compare_companies runs the four comp templates from the Peer Comparison module against an explicit list, one of your tags, or the related tickers.

Read-only where it counts

No tool can create, change, or delete holdings, transactions, or accounts. The connection agents reach is opened read-only at the SQLite layer, so that is physics, not policy. Agents write notes and tags, reorder your widgets, and can put a view on screen without touching what is stored.

On the record

Account numbers cross the boundary masked. Every call lands in a visible activity feed, and every change an agent makes lands in the same audit log as every other change. A research note an agent wrote says which client wrote it, derived from the log, not from the note.

Bounded by construction

Four sessions at most. Network research calls are rate limited, navigation is limited to one move every two seconds, responses are capped in size, and every tool body times out. The whole surface is documented and snapshot tested.


§10 · craft

Built like a developer tool, because it is one.

Keyboard first, configured in text files, engineered for the people who notice.

Rust, drawn on the GPU

Native Rust with a wgpu renderer on Metal. Every frame, charts included, is rasterized on the GPU, and trackpad scroll and zoom redraw as you move.

First frame, fast

The window opens before the data loads, then everything streams in. A test in CI fails the build if the cold-start path passes 750 ms. On an M1 MacBook Pro, 16 GB, a release build reaches first frame in 593 ms, median of 5 runs.

⌘K for everything

One palette reaches every view, action, and symbol, served by a local full-text index. Live search covers tickers you don't own yet.

Rebind everything

About 70 commands take any key, multi-key sequences included, with conflict detection. Default and Vim keymaps ship now.

Config is text

Three-layer TOML configuration with hot reload. Fifteen themes built in, and custom themes are TOML files too.

Saved views

Any filter, sort, and layout saves as a named pill. Your Roth-only view is one keystroke away.

Per-lot cost basis

FIFO, LIFO, and specific identification, with unrealized gain and loss tracked per lot.

Tags that think

Tag any security and the tag becomes a view: fundamentals, upcoming earnings, and a compare chart against your benchmark.


§11 · connections

The broker you already use.

Linking runs through SnapTrade and is read only: you log in at your broker, Pyx never sees the credentials, and no order can be placed from here. 40 institutions across six markets, and a file importer for everything else.

United States23
FidelitySchwabVanguardRobinhoodInteractive BrokersE*TRADEWells FargoChaseCitiU.S. BankPNCEdward JonesEmpowerTIAATransamericaTradeStationtastytradeTradierPublicAlpacaWebullMoomooeToro

Canada6
QuestradeWealthsimpleTD Direct InvestingBMO InvestorLineCIBC Investor's EdgeWebull Canada

UK and Europe4
AJ BellTrading 212DEGIROBUX

Australia2
CommSecStake

India2
ZerodhaUpstox

Crypto exchanges3
CoinbaseBinanceKraken

These link, but Pyx has no crypto asset class and does not price exchange balances.

Coverage belongs to SnapTrade and shifts over time, so the connection portal always shows the current list. If your broker is not on it, CSV, OFX, and QFX statement files import with no third party involved at all. Details in connect your brokerage.


§12 · scope

Narrow on purpose.

Pyx is for people who know what they own and want to see it clearly. Everything it leaves out, it leaves out deliberately:

No optionsNo mobile appNo web versionNo social feed

A tool that tries to be everything ends up being a feed.

§13 · ready

A minute from now, it's yours.

The download is free and asks for nothing. Subscribe from inside Pyx when you want your brokerage synced, and the key lands by email in about a minute.

For macOS (Apple Silicon), Windows, and Linux. Every build is on the download page.