xbrlkit
Work with XBRL filings above Arelle: fetch a filing, parse it once into a neutral typed model, and project that model into whichever portable representation you need.
EDGAR ──▶ Arelle ──▶ XbrlModel ──┬──▶ holon.jsonld (RDF / JSON-LD)
├──▶ Tavi (compiled model)
└──▶ …
Arelle stays the parser — nobody should reimplement DTS resolution. What it does
not give you is anything ergonomic to hold: ModelXbrl is a large mutable
object graph tied to a controller you have to close. XbrlModel is the answer to
that — stateless, single-filing, lossless, and the waist every projection hangs
off.
The one architectural rule: everything goes through XbrlModel. A feature
that reaches into Arelle's ModelXbrl directly is bypassing the waist, and that
is the change that turns a kit into a junk drawer.
Projections
| Target | Status | Notes |
|---|---|---|
holon (.holon.jsonld) |
shipped | RDF/JSON-LD, renders in the Holon Viewer |
Tavi (.tavi.json) |
shipped | Project Tavi compiled model, PWD-2026-09-01 |
| OIM (xBRL-JSON / xBRL-CSV) | planned | Arelle already emits these; a native writer is a fidelity check on XbrlModel |
| property graph / Parquet | planned | see model.py |
Tavi is a public working draft and its name is explicitly a working title,
so treat that projection as tracking a moving target. --format tavi also
writes a .tavi.gaps.json sidecar recording what the filing carries that the
model has nowhere to put — that file is the point of the projection, not a
by-product of it.
Install
As a package
pip install xbrlkit
Exposes the xbrlkit CLI (xbrlkit build …, xbrlkit fetch …, xbrlkit query …)
and the library — use this to consume it from another project. Set your SEC
User-Agent via the environment (see SEC User-Agent).
From source (development)
# Install the toolchain
brew install uv just
# Install dependencies and provision .env from the template
just install
just install creates .env from .env.example on first run — then set your
SEC User-Agent in it.
SEC User-Agent
SEC EDGAR requires a descriptive User-Agent on every request, or it throttles
you (empty responses / HTTP 429). just install already created your .env —
set your details there:
# .env
SEC_GOV_USER_AGENT="Your Name your@email.com"
.env is loaded automatically by every command. Outside the just workflow,
export SEC_GOV_USER_AGENT="Your Name your@email.com" or pass --user-agent.
Usage
# Build a holon.jsonld from a specific filing (-> ./output/)
xbrlkit build --cik 320193 --accno 0000320193-23-000106
# Fetch the latest filing for a ticker (-> ./output/)
xbrlkit fetch --ticker NVDA
# Query consolidated facts in a built holon (in-memory SPARQL)
xbrlkit query --in output/0000320193-23-000106.holon.jsonld --element us-gaap:Assets
From a source checkout, just wraps the same CLI as a shorthand:
just build 320193 0000320193-23-000106 and just fetch NVDA.
View & explore
Built holons render in the RoboSystems Holon Viewer — a browser-based reader that renders the financial statements and lets you ask questions of the report with AI:
- Hosted: https://holon.robosystems.ai/ — open a
holon.jsonldand explore the statements, notes, and dimensional facts, or chat with the report. - Source: https://github.com/RoboFinSystems/robosystems-holon-viewer — run it locally or self-host.
The viewer reads a holon entirely client-side, so a single holon.jsonld is a
complete, portable, self-describing report.
License
This project is licensed under the MIT License - see the LICENSE file for details.
MIT © 2026 RFS LLC
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 xbrlkit-0.2.0.tar.gz.
File metadata
- Download URL: xbrlkit-0.2.0.tar.gz
- Upload date:
- Size: 1.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1423c59ad16ce720de25246add999b094648e96a1f6dccff880a3495213b44e7
|
|
| MD5 |
dacc30457bb1accabb1b89a0479575a7
|
|
| BLAKE2b-256 |
ea165e6e82037276fbce8656bad828a86f1039438178a3acfeb977e3f1681d9a
|
Provenance
The following attestation bundles were made for xbrlkit-0.2.0.tar.gz:
Publisher:
publish.yml on RoboFinSystems/xbrlkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xbrlkit-0.2.0.tar.gz -
Subject digest:
1423c59ad16ce720de25246add999b094648e96a1f6dccff880a3495213b44e7 - Sigstore transparency entry: 2715986543
- Sigstore integration time:
-
Permalink:
RoboFinSystems/xbrlkit@5a850ad50e6a143a2f75962b2875bec0d8bddcd5 -
Branch / Tag:
refs/heads/release/0.2.0 - Owner: https://github.com/RoboFinSystems
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a850ad50e6a143a2f75962b2875bec0d8bddcd5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file xbrlkit-0.2.0-py3-none-any.whl.
File metadata
- Download URL: xbrlkit-0.2.0-py3-none-any.whl
- Upload date:
- Size: 1.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dab15eb2726f237fe862bab67210240fe44e54b4700beff45cea5eba2e4238a
|
|
| MD5 |
9101e9a650bb904a733899ea6cc3944e
|
|
| BLAKE2b-256 |
98d965d54148a68b06d08f961530dcff8e610739833dbb5f1fdef65e796d454a
|
Provenance
The following attestation bundles were made for xbrlkit-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on RoboFinSystems/xbrlkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xbrlkit-0.2.0-py3-none-any.whl -
Subject digest:
3dab15eb2726f237fe862bab67210240fe44e54b4700beff45cea5eba2e4238a - Sigstore transparency entry: 2715987482
- Sigstore integration time:
-
Permalink:
RoboFinSystems/xbrlkit@5a850ad50e6a143a2f75962b2875bec0d8bddcd5 -
Branch / Tag:
refs/heads/release/0.2.0 - Owner: https://github.com/RoboFinSystems
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a850ad50e6a143a2f75962b2875bec0d8bddcd5 -
Trigger Event:
push
-
Statement type: