sciqnt — local-first, agent-native cross-asset portfolio tracker & data layer (CLI/TUI)
Project description
sciqnt
A local-first, agent-native portfolio tracker & cross-asset financial data layer. One canonical, point-in-time-correct schema for your positions, transactions, cash and prices — fed by community connectors for each broker / exchange / data source, rendered in a fast TUI, and consumable by any AI agent (Claude Code, Codex, …) through plain CLI + versioned JSON surfaces.
Deterministic code computes the numbers. Agents reason and explain. You own every byte: your credentials live in your OS keyring, your data on your disk — there is no server.
net worth (EUR) │ daily
24,570 ┤ ⢀⡤⠖⠋⠹
│ ⣀⡤⣄⣤⣀⣀⣀⣀⣀ ⡤⠤⠤⠤⣄ ⣀⣀⣀⣀⡤⠞
22,019 ┤ ⢀⣠⢤⣰⠒⠃ ⠉ ⠈⠉⠛⠁ ⠈⠉⠁⠉⠈⠁
│ ⢀⣰⠒⠚⠉⠉⠓⠒⠋
│⣀ ⣀⢀⣀⣠⠤⠖⠋⠛⠉⠉
19,468 ┤⠈⠙⠒⢦⣀⡤⠤⣤⣄⣠⠴⠋⠉
╰────────────────────────────────────────────────────────────
2026-01-02 2026-06-12
total value 24,121.05 EUR TWR 13.70 %/yr
total P/L (lifetime) +3,340.95 EUR XIRR 9.79 %/yr
dividends (lifetime) +395.10 EUR max DD −14.5 %
That's the built-in demo portfolio — synthetic and deterministic. sciqnt runs in demo mode until you connect an account; no real finances appear in any screenshot or doc, ever.
Install
git clone https://github.com/sciqnt/sciqnt && cd sciqnt
python3 -m venv .venv && .venv/bin/pip install pydantic prompt-toolkit keyring
./bin/sciqnt install # adds `sciqnt` to your PATH
sciqnt # the interactive home (demo portfolio until you connect)
PyPI packages (uv tool install sciqnt, pip install sciqnt-degiro, …) are
coming with the first tagged release. macOS note: use a Python built
against modern OpenSSL (e.g. Homebrew python@3.13) — the system Python's
LibreSSL is fragile against financial-API TLS.
What you get
- The TUI: portfolio home with net-worth chart (1D…All ranges, 5-minute intraday), positions / exposure / income / news / flows / history tabs, account drill-downs — everything keyboard-driven.
- Honest money math:
Decimalend-to-end, FIFO/LIFO/AVG lots, fees-inclusive cost basis, TWR (GIPS-style breaks), XIRR, max drawdown, benchmark comparison — computed from your raw transaction history, point-in-time-correct (sciqnt --asof 2024-12-31). - Connectors as self-contained bundles (
modules/sq-*): manifest + agent-facing SKILL + a living quirks log (FINDINGS) + conformance tests. Degiro (CSV + live), Robinhood, Kalshi, Polymarket, Yahoo, Tiingo, ECB FX, SEC EDGAR, FIRDS, OpenFIGI, RSS news — and a scaffold + harness for building your own. - Agent-native, both directions: every view is reproducible from the
CLI (
sciqnt --helpmaps it;--jsongives versioned, Decimal-as-string data —sciqnt.portfolio/v1,sciqnt.history/v1, …). Summon your coding agent from any screen and it receives where you are, what's on your screen, and the command that reproduces it; agents can leave findings on your home screen (sciqnt insight add). - A point-in-time price archive: append-only, bitemporal, yours.
For agents
Run sciqnt --help. Every screen of the app has a CLI form; add --json
for structured data. Skills ship in-repo (sq-portfolio, sq-connectors)
and install into Claude Code / Codex automatically when summoned from the
app. AGENTS.md is the codebase map — start there if
you're an agent.
Build a connector for your broker
The platform ships the contract + conformance harness + a scaffold — the long tail of connectors belongs to the community (and to your coding agent). See CONTRIBUTING.md; the short version:
"build a sciqnt connector for <my broker>" # tell your coding agent
Independent connector repos install with sciqnt modules add owner/repo
(conformance runs locally before first use — trust is earned by the
harness, not claimed).
Going deeper
FOUNDATION.md— the worldview + the 13 Founding Articles.PRINCIPLES.md— the 18 operating principles.research/— the grounded reasoning behind every decision.
Principles, the short list: local-first and sovereign — fire us and keep everything. Deterministic core, probabilistic edge — LLMs never touch the money math. Data first — rendered text is for humans, versioned JSON is the contract. Read wide, execute gated. Synthetic fixtures only.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sciqnt-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sciqnt-0.1.0-py3-none-any.whl
- Upload date:
- Size: 100.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b02a8c2710a000ec71a56deffcd658066cfba3b38c46231b34eaee4f6c6db651
|
|
| MD5 |
6162e105b6f60d1f4fa83cc97f6c5207
|
|
| BLAKE2b-256 |
d4a6a9fbfd3b98270a91594dbc381358a2d39ecfbd13861b3829c78dce57c8e8
|