Bitcoin Forum
May 20, 2026, 12:45:11 PM *
News: Latest Bitcoin Core release: 31.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Unified Trading Terminal Project  (Read 41 times)
romeshomey (OP)
Hero Member
*****
Online Online

Activity: 660
Merit: 500


View Profile
May 17, 2026, 05:25:45 PM
Last edit: May 19, 2026, 02:20:21 PM by romeshomey
 #1

I started this project about 7 months ago.  It is open source, FREE to use / test.  If you want to support my work, there is a BUY UTTT button and also a donate button on the header you can use.  

https://github.com/eyemaginative/utt-unified-trading-terminal

UTT — Unified Trading Terminal: local-first trading, wallet tracking, DEX routing, tax/basis tooling, and multi-venue crypto operations

Project: UTT — Unified Trading Terminal  
Token / project asset: UTTT  
Status: Experimental open-source desktop/local trading terminal  
Current focus: Local-first exchange aggregation, self-custody visibility, DEX routing, wallet-history ingestion, tax/basis tooling, and practical crypto operations.

Important note up front

UTT is not being presented as a security, investment contract, managed fund, exchange, custody provider, or financial adviser. It is a local-first software project intended to help users organize, view, and interact with their own exchange accounts, wallets, market data, DEX routes, deposits, withdrawals, orders, and cost-basis information. Nothing here is financial advice. The software is experimental and should be treated like power-user tooling: test carefully, use small amounts first, keep your own backups, and understand what every connected API key or wallet signature can do.



What is UTT?

UTT stands for Unified Trading Terminal. The goal is to build a local-first crypto command center that brings together the pieces most crypto users currently have scattered across many different apps:

  • centralized exchange balances
  • centralized exchange orders
  • on-chain wallet balances
  • DEX swaps
  • market cap / volume reference data
  • token registry metadata
  • deposits and withdrawals
  • basis lots and FIFO tax calculations
  • self-custody wallet snapshots
  • project/token management tooling
  • local API-key storage and database backups

Instead of forcing the user to constantly jump between Coinbase, Kraken, Gemini, Robinhood, Solana wallets, Polkadot/Hydration tools, explorers, spreadsheets, tax trackers, and DEX interfaces, UTT is designed to become one local terminal where those workflows can be gradually unified.

It is built as a local application with a FastAPI backend, a React/Vite frontend, and a SQLite database. The basic philosophy is simple:

Quote
Your trading terminal should belong to you. Your data should be local. Your keys should not be hard-coded into source files. Your wallets and venues should be visible in one place. Your activity should be organized into a ledger you can understand.



What does UTT currently do?

UTT has grown from a basic trading terminal into a broader crypto operations dashboard. The current published baseline includes the following major systems.

1. Multi-venue exchange support

UTT is designed to connect to multiple trading venues and normalize their data into a common interface. Current work has included support paths for:

  • Coinbase
  • Gemini
  • Kraken
  • Robinhood Crypto
  • Crypto.com Exchange
  • Dex-Trade

The purpose is not merely to display a balance from one exchange. The goal is to ingest and compare balances, order data, fills, fees, native venue order IDs, local routed orders, and terminal/open order states across multiple venues.

The terminal has an All Orders table that reflects local orders, venue-native orders, and DEX swap rows where available. It also includes a viewed/confirmed workflow so new or unreviewed activity can be surfaced and then marked as seen.

2. Local-first API key management

UTT has been moving away from static environment-file secrets and toward a local profile/API-key vault model. The idea is that API keys should be managed through the local app profile rather than committed into code or scattered across scripts.

The project uses local authentication, profile management, 2FA support, and DB-backed API-key storage. Sensitive values are intended to stay local, and the publishable repo is kept free of private keys, live .env files, databases, and runtime secrets.

3. Portfolio balance aggregation

UTT can show a total portfolio value across venues. The latest baseline improved this so that the AppHeader portfolio total can include cached wallet-address and self-custody balance snapshots, not only CEX balances.

That matters because a realistic crypto portfolio is not only exchange balances. It may include:

  • CEX balances
  • Solana wallet balances
  • Hydration / Polkadot ecosystem wallet balances
  • BTC / DOGE / DOT self-custody addresses
  • custom project wallets

The goal is for the top-level terminal balance to represent all known tracked holdings, even if the user has not manually opened a specific balances window during that session.

4. Self-custody wallet-address tracking

UTT includes a wallet-address system for tracking on-chain addresses. These are separate from centralized exchange balances.

Wallet addresses can be registered with fields such as:

  • asset
  • network
  • address
  • label
  • wallet grouping
  • owner scope

The backend can store wallet-address balance snapshots and transaction rows. This creates the foundation for local wallet history, deposit detection, withdrawal detection, and transfer-linking between wallets or venues.

5. Solana / Jupiter DEX integration

UTT includes Solana DEX wiring using Jupiter for swap workflows. The terminal distinguishes DEX flows from normal CEX limit-order flows so that selecting a Solana DEX venue does not break or interfere with centralized-exchange behavior.

The Solana/Jupiter work includes:

  • wallet-provider detection and connection paths
  • swap transaction building
  • sign/send flow through the user's wallet
  • Jupiter quote/orderbook-like sampling paths
  • swap-order recording into a local swap_orders table
  • reflection of DEX swaps into the All Orders table
  • better handling of native SOL legs, token/SOL pairs, and swap-like transaction classification

The philosophy is opt-in DEX support: DEX functionality should activate only when a DEX venue is selected and should not gate or break existing CEX workflows.

6. Polkadot / Hydration work

UTT has an active Polkadot / Hydration integration track. The current Hydration work includes:

  • Hydration RPC configuration through Dwellir or equivalent RPC providers
  • Profile/API-key support for Hydration RPC keys
  • Token Registry metadata for Hydration assets
  • Hydration balance lookup paths
  • Hydration asset resolution
  • manual route / pool fallback support for custom routes such as UTTT-HDX
  • protected SDK quote behavior to avoid hammering RPC quotas
  • controlled price cache experiments

A major current goal is to add full Hydration wallet-history ingestion: deposits, withdrawals, basis queue handling, and bridge transfer records. This is being approached carefully because address history is not the same thing as balance state, and it should not rely on heavy SDK quote calls or uncontrolled RPC polling.

7. Token Registry

UTT includes a Token Registry window and backend model. The registry stores metadata such as:

  • chain
  • venue override
  • symbol
  • address / mint / contract / asset ID
  • decimals
  • label
  • external price source
  • external price ID

This is important because token metadata is different across networks:

  • Solana uses mint addresses
  • EVM chains use contract addresses
  • Hydration uses asset IDs, with HDX as native
  • global market data providers use their own coin IDs

The registry helps UTT avoid hard-coding everything in backend files. It also lets market data lookups use user-managed metadata first.

8. Market Cap and Volume tooltabs

The latest completed tranche added AppHeader tooltabs for:

  • Market Cap
  • Volume

These windows use a backend market_metrics service rather than calling market APIs directly from the frontend. The backend can cache results, use Token Registry external price IDs, fall back to known mappings, and auto-resolve selected assets through CoinGecko symbol search when appropriate.

Important behavior:

  • The AppHeader chip fetches the selected UI asset only.
  • The Market Cap / Volume windows can fetch DB-owned or tracked assets.
  • The backend caches CoinGecko rows and can serve stale data when rate-limited.
  • The Token Registry is now preferred over hardcoded symbol maps.
  • Assets like MATH can be resolved automatically when selected if CoinGecko has a matching coin ID.

This means if the user switches the UI to something like DOGE-USD, BCH-USD, or MATH-USD, the header can show market cap and volume for the selected asset without fetching the entire world of assets every few seconds.

9. Deposits, withdrawals, lots, and basis tracking

UTT is not only a trading screen. It is also developing into a local crypto activity ledger.

The current ledger system includes:

  • asset deposits
  • asset withdrawals
  • basis lots
  • FIFO lot consumption
  • lot journal entries
  • transfer-out impact
  • transfer-in linking
  • missing-basis flags
  • realized P&L support paths

The purpose is to connect trading activity, wallet movement, and cost basis into one local system instead of relying entirely on manual spreadsheets.

A key design principle is that transfers should be treated differently from sells. Moving an asset from one wallet or venue to another should not automatically be treated as a taxable sale. Instead, the system should preserve basis movement across transfer records where possible.

10. All Orders and tax/net fields

The All Orders table is intended to unify activity across sources. It can show net values, fee-adjusted values, and tax/net-after-tax style columns. The project has also been working on making realized/tax fields safer so blank/missing values do not distort the interface.

The bigger goal is to eventually have one table where a user can see:

  • what happened
  • where it happened
  • when it happened
  • what venue or wallet was involved
  • what the gross/net value was
  • what fees applied
  • what basis was used
  • what realized gain or missing-basis issue exists

11. Local backups and safety workflow

UTT includes a local backup direction for the SQLite database. This matters because the database is the source of truth for local settings, token registry rows, snapshots, lots, deposits, withdrawals, and other state.

The project emphasizes:

  • keep secrets out of Git
  • keep database files out of Git
  • use local backups
  • avoid committing runtime artifacts
  • avoid hardcoded private keys
  • prefer local profile/API-key management



Why build something like this?

Crypto users often end up with a fragmented operational setup:

  • exchange balances in one place
  • wallet balances somewhere else
  • DEX trades in another app
  • tax lots in a spreadsheet
  • explorer history in a browser tab
  • API keys in environment files
  • market cap and volume data on external sites
  • manual notes for deposits and withdrawals

UTT is trying to reduce that fragmentation.

The idea is not to replace every exchange or every wallet. The idea is to provide a local command layer that lets the user unify their own data and workflows.

For example, a user might want to know:

  • What do I currently hold across CEX accounts and self-custody wallets?
  • What is my total USD value if wallet snapshots are included?
  • Which assets do I own that have market cap and volume data?
  • Which deposits still need cost basis?
  • Which withdrawals are transfers rather than sales?
  • Which orders are still open?
  • Which swaps were confirmed on chain?
  • Which assets are in my Token Registry?
  • Which chain-specific IDs, mints, or decimals belong to those assets?

That is the type of operational visibility UTT is aiming for.



What makes UTT different from a normal portfolio tracker?

UTT is not only a price tracker. It is being built as a terminal and ledger engine.

A normal portfolio tracker might show balances and prices. UTT is being designed to connect:

  • balances
  • orders
  • fills
  • DEX swaps
  • wallet addresses
  • deposits
  • withdrawals
  • basis lots
  • market metadata
  • local API-key management
  • token registry data

It also has a stronger local-first bias. Rather than everything being cloud-account based, the current UTT model is intended to run from the user's own machine, with local configuration, local database state, and local backups.



Current development roadmap

The latest completed baseline includes the Market Cap / Volume tooltabs and improved wallet-inclusive AppHeader portfolio totals.

The next major roadmap section is Hydration wallet-history ingestion:

  • discover Hydration wallet history
  • classify inbound and outbound transfers
  • cache transaction rows safely
  • materialize deposits
  • materialize withdrawals
  • queue missing-basis records
  • link bridge transfer records
  • preserve cost basis across transfers where possible

After that, there is a planned revisit of Hydration SDK pricing, but only with a safer architecture:

  • one persistent SDK context/cache
  • no per-pair/per-refresh SDK hammering
  • all UI prices served from a stateful local cache
  • rate limits respected by design



UTTT and project alignment

UTTT is the project token associated with UTT. The broader idea is to build an open-source aligned trading terminal and ecosystem around it, rather than a closed corporate terminal controlled by a centralized company.

The project has also explored multichain token presence, including Solana and Polkadot Asset Hub / Hydration related work. The purpose is to connect the terminal, the token registry, DEX routing, liquidity workflows, and self-custody visibility into one coherent project.

Again: this is not financial advice, and this should not be read as a promise of profit, a security offering, or a managed investment scheme. UTT/UTTT is best understood as an experimental open-source project and local-first crypto tooling effort.



Who is this for?

UTT is mainly for crypto power users, builders, traders, token project operators, and self-custody users who want more control over their own data.

It may be useful for people who:

  • use multiple exchanges
  • hold assets in multiple wallets
  • want a local database of their activity
  • care about deposits and withdrawals as separate ledger events
  • need to track missing cost basis
  • want DEX and CEX activity in one interface
  • want market cap and volume context inside the terminal
  • want to avoid putting everything into a cloud service

It is probably not for someone who wants a one-click beginner trading app. It is closer to a workstation: powerful, local, configurable, and still evolving.



Current state and transparency

This is active development software. Some parts are working, some parts are experimental, and some parts are intentionally gated or disabled by default until they are safe.

Examples:

  • Market Cap / Volume tooltabs are now working and published.
  • Self-custody wallet snapshots can contribute to portfolio totals.
  • Token Registry external price metadata is used before backend fallbacks.
  • CoinGecko selected-symbol auto-resolution works for assets like MATH.
  • Solana/Jupiter DEX paths are wired, but DEX operations should still be tested carefully.
  • Hydration wallet-history ingestion is the next major work item.
  • Broad Hydration SDK quote hammering is intentionally avoided.

The project is being built iteratively, with a strong preference for surgical changes, tested baselines, and preserving known-good behavior between releases.



Final summary

UTT is a local-first Unified Trading Terminal for crypto users who want one place to manage and inspect multi-venue activity, self-custody balances, token metadata, market data, DEX workflows, deposits, withdrawals, and cost-basis records.

It is not just a portfolio tracker and not just a trading screen. The long-term goal is a local crypto operations terminal: exchange data, wallet data, DEX data, ledger data, and market data unified into one system that the user controls.

The latest published baseline includes Market Cap and Volume tooltabs, DB-owned asset discovery, Token Registry price-source resolution, CoinGecko selected-symbol auto-resolution, wallet-inclusive portfolio totals, and README cleanup.

The next development focus is Hydration wallet-history ingestion: deposits, withdrawals, basis queue handling, and bridge transfer records.

Project direction: local-first, multi-venue, self-custody aware, DEX-aware, ledger-aware, open-source aligned crypto terminal tooling.

Updated

- Hydration price-cache status classifications
- /hydration/prices/status safe polling docs
- cache-only vs controlled-refresh behavior
- sidecar quote-cache / singleflight / backoff docs
- SDK fallback disabled-by-default language
- generic Hydration router quote/orderbook blocking docs
- UTTT-HDX manual sell exact-in and buy exact-out docs
- ASCII-safe source label: derived:UTTT-HDXxHDX-USD
BattleDog
Full Member
***
Offline

Activity: 228
Merit: 216



View Profile WWW
Today at 10:40:05 AM
 #2

This is actually a useful direction. Most "portfolio trackers" are just price dashboards wearing a trading hat, while the real mess is the boring stuff: balances scattered everywhere, deposits/withdrawals, basis, stale API keys, token metadata lies, chain-specific weirdness, and "why is my PnL different in three different places?"

The API key handling is the part I'd be most paranoid about. Read-only keys by default, no withdrawal permissions, encrypted local vault, obvious warnings when a key has dangerous scopes, and ideally some kind of "panic disable" flow where the user can quickly see which venues have active credentials. People sometimes have the bad habit of saying "local-first" and then quietly creating a little private-key soup in an SQLite file somewhere.

Also, good call separating normal CEX order flow from DEX/Jupiter-style swaps. Mixing those concepts too early turns the UI to the dark side. A CEX order, a swap quote, a bridge tx, and a self-custody balance snapshot are not the same animal, even if users mentally put them in the same "my crypto stuff" bucket.

If I were building this, I'd keep the first stable milestone narrow: balances, wallet/address tracking, deposits/withdrawals, order history, and exportable tax/basis records. Once that part is solid, routing and execution can grow from there. Trading terminals usually die from ambition before they die from lack of features. This one has a sensible skeleton though, and I like the "your trading should belong to you" philosophy.

romeshomey (OP)
Hero Member
*****
Online Online

Activity: 660
Merit: 500


View Profile
Today at 11:42:36 AM
 #3

This is actually a useful direction. Most "portfolio trackers" are just price dashboards wearing a trading hat, while the real mess is the boring stuff: balances scattered everywhere, deposits/withdrawals, basis, stale API keys, token metadata lies, chain-specific weirdness, and "why is my PnL different in three different places?"

The API key handling is the part I'd be most paranoid about. Read-only keys by default, no withdrawal permissions, encrypted local vault, obvious warnings when a key has dangerous scopes, and ideally some kind of "panic disable" flow where the user can quickly see which venues have active credentials. People sometimes have the bad habit of saying "local-first" and then quietly creating a little private-key soup in an SQLite file somewhere.

Also, good call separating normal CEX order flow from DEX/Jupiter-style swaps. Mixing those concepts too early turns the UI to the dark side. A CEX order, a swap quote, a bridge tx, and a self-custody balance snapshot are not the same animal, even if users mentally put them in the same "my crypto stuff" bucket.

If I were building this, I'd keep the first stable milestone narrow: balances, wallet/address tracking, deposits/withdrawals, order history, and exportable tax/basis records. Once that part is solid, routing and execution can grow from there. Trading terminals usually die from ambition before they die from lack of features. This one has a sensible skeleton though, and I like the "your trading should belong to you" philosophy.

I agree.  I had tried to consider as much of this as possible before even attempting to start working on this.

On API handling, the model is intentionally conservative. Keys entered into UTT are write-only from the UI side: they’re encrypted at rest and are never shown back in plaintext after submission. The interface only keeps metadata visible after save, like venue, label, masked key tail, update time, and delete controls. The user is told to save their secrets before submitting because the UI will not reveal them again. There is also a 2FA confirmation requirement on key submission, so adding or changing credentials is treated as a sensitive action, not a casual form post.

The goal is also to avoid “private-key soup.” UTT is not built around importing exchange withdrawal credentials or stuffing seed phrases into the app. For self-custody balance tracking, the model is address-based wherever possible. For DEX execution, signing should happen in the wallet/client path rather than by parking private keys inside the terminal. That separation is deliberate. CEX API credentials, self-custody balance tracking, swaps, bridges, and local accounting are treated as different trust domains, not one blended blob.

You’re also right about dangerous scopes. The intended stance is least privilege: read-only keys wherever the user only wants balances/history, and no withdrawal permissions at all. For execution venues, the user should only grant the minimum trading scope needed. There is already a venue-management layer in the UI so venues can be locally disabled without changing backend defaults, and the key panel keeps saved credentials visible by metadata so the user can quickly see what is active and delete it. A stronger “panic disable / disable all venue credentials” flow is a natural next hardening step, but the architecture already separates venue exposure and credential storage in the right direction.

On product scope, I agree with you completely. The first stable milestone is not “do everything.” It is exactly the boring but hard stuff: balances, wallet/address tracking, deposits, withdrawals, basis, lot accounting, realized PnL, export, and reconciliation across venues. That’s already how the project has been evolving. The execution side is being kept separate on purpose, especially the distinction between normal CEX order flow and DEX/Jupiter-style swaps.

Your concerns are valid and are the same concerns UTT has been designed around: local-first handling, encrypted-at-rest secrets, no plaintext redisplay, explicit trust separation, venue-level controls, and a narrow accounting-first foundation before expanding deeper into routing and execution.

I tried to consider as much as possible beforehand and am open to suggestions.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!