A local trading terminal for Warframe's player market. It watches prices, points out the trades worth making, and quietly keeps a history that warframe.market itself throws away after 90 days.
Warframe is a game with a big player-run economy. Players sell gear to each other for platinum (the game's premium currency) on warframe.market. Prices move all the time, some items are quietly mispriced, and the best opportunities (a great roll listed for far too little, a part that's cheaper than the set it builds) are hard to spot by eye across thousands of items.
voidbroker pulls that market data onto your machine and turns it into clear answers: what's cheap right now, what's likely to change soon, and what's worth flipping. It runs as a small web app you open in your browser.
If you don't play Warframe: think of it as a tiny single-player Bloomberg terminal for a video-game economy. Everything runs locally. No account, no login, nothing leaves your computer.
Status: the market signals (opportunities, arbitrage, ducats) are working, and the buy-the-dip signal is backtested at about +17% versus buying on a random day. The riven disposition forecast is an early, transparent version that sharpens as your archive grows. Roadmap.
Each of these is a screen in the terminal. Jargon is explained the first time it shows up.
- Markets: candlestick price history for any tradable item, with volume and a quick read on whether it's trending up or down.
- Opportunities: items selling below their recent normal price, ranked by
margin × how-liquid-it-is ÷ how-long-it-takes-to-flip. A fat margin on something nobody buys loses to a thinner one that sells in a day. - Riven deals: rivens are randomized weapon mods, so two "the same" rivens can be worth wildly different amounts. This scores live listings against comparable ones and flags good rolls priced like junk.
- Forecast: every weapon has a disposition, a balancing multiplier the developers nudge up or down based on how much it gets used. That directly moves riven prices. This predicts the likely next move and shows its reasoning.
- Set arbitrage: a Prime set is just its parts. When the set and the sum of its parts drift apart in price, there's a flip: buy the parts and sell the set, or the reverse.
- Ducats: the cheapest items to turn platinum into ducats (a second currency you spend on Baro Ki'Teer, a traveling vendor who visits every two weeks).
- Baro & Prime Resurgence: countdowns and inventories for the game's scheduled vendors, plus how much cheaper currently-unvaulted Prime gear is than usual.
- Journal: log your actual buys and sells; it tracks realized and unrealized profit.
- Watchlist, daily digest, and a
Cmd/Ctrl-Kcommand palette: pin items, get a one-screen briefing of what's worth acting on, and jump anywhere from the keyboard.
| Buy opportunities | Undervalued rivens |
|---|---|
![]() |
![]() |
| Disposition forecast | Daily digest |
![]() |
![]() |
You'll need uv (Python) and Node.js.
git clone https://github.com/Ferinjoque/voidbroker.git
cd voidbroker
uv sync # install the backend into a local .venv
uv run voidbroker seed # pull a small market slice so every screen has data
uv run voidbroker serve # start the local API at http://127.0.0.1:8000Then start the web terminal in a second shell:
cd web
npm install
npm run dev # open http://localhost:5173seed is a quick one-time populate (about 150 polite API calls) so you can see the terminal
working immediately. To build the full archive and keep it fresh, run ingestion on a schedule.
The longer voidbroker runs, the more history it has, which is exactly what the forecasts need. Register a recurring background job that fetches a small batch each time and rotates through the whole catalog:
# Windows: a Scheduled Task that ingests every 6 hours. Each run takes a few minutes.
powershell -ExecutionPolicy Bypass -File scripts/install-schedule.ps1 -IntervalHours 6It's polite by design (about 3 requests/second, bounded batches) and stays out of your way.
For macOS/Linux equivalents and a manual foreground option, see
docs/OPERATIONS.md. Check on it any time with uv run voidbroker doctor.
warframe.market API ──▶ ingestion (rate-limited) ──▶ local DuckDB archive
│
signals + forecasts │
▼
React terminal ◀── FastAPI read API
- Backend (Python): a rate-limited client for warframe.market, a single-file DuckDB archive that accumulates price, disposition, and auction history, the signal and forecasting logic, and a small FastAPI read API. There's also a full command-line interface if you prefer the terminal.
- Frontend (
web/): a React + Vite + Tailwind single-page app that reads from the local API. Dense tables, inline charts, keyboard-first.
Why local DuckDB? warframe.market only exposes about 90 days of history and keeps no record of how weapon dispositions change over time. By snapshotting on a schedule, voidbroker slowly builds a dataset you can't get any other way, which is what makes the predictions possible.
Everything in the UI is also a command, handy for quick checks or scripting:
uv run voidbroker digest # one briefing: the few things worth acting on now
uv run voidbroker signals # buy opportunities
uv run voidbroker forecast # predicted disposition buffs/nerfs
uv run voidbroker deals # undervalued rivens
uv run voidbroker arbitrage # set-vs-parts flips
uv run voidbroker info # what's currently in your archiveuv run voidbroker --help lists them all.
Python 3.11+, DuckDB, httpx, FastAPI, APScheduler, Typer, uv, pytest, ruff on the backend. React, Vite, TypeScript, Tailwind, TanStack Query, and lightweight-charts on the frontend. Everything runs locally with no hosting required.
Issues and PRs are welcome. See CONTRIBUTING.md for setup and the checks to run before opening a PR. The design system the frontend follows is in DESIGN.md.
MIT. voidbroker is a fan project and is not affiliated with Digital Extremes or warframe.market.




