Metadata-Version: 2.4
Name: unitbook
Version: 0.1.0
Summary: Unitized fund ledger for a pooled trading account: signed append-only log, units per investor, NAV per unit, fee by unit burn.
Author: confirmxxx
Author-email: confirmxxx <235901389+confirmxxx@users.noreply.github.com>
License-Expression: LicenseRef-Proprietary
License-File: LICENSE
Requires-Dist: pynacl
Requires-Dist: openpyxl
Requires-Dist: mcp>=2.1,<3
Requires-Python: >=3.12
Description-Content-Type: text/markdown

# unitbook

status: pre-alpha

A standalone, offline, harness-agnostic ledger for one pooled trading account with several
investors. It answers one question exactly: if this investor withdrew today, how much would
they receive — and can they prove it?

- Pure Python package. No server, no database, no bot, no TUI, no vendor SDK, no network
  call in the core.
- Append-only, hash-chained, signed event log → per-lot units → NAV per unit → performance
  fee by unit burn → per-investor statements in the trader's own spreadsheet layout.
- Every number is reproducible from the log with no model in the loop. Agents drive it;
  they never compute it.

## Install

Distribution channel is not finalized yet — see `docs/gitops/RELEASING.md`. For
now, run from source:

```sh
uv sync
uv run unitbook
```

## Operator

Two commands, both outside the licensed surface — `admin` is dispatched before the verb
parser and never appears in `schema`, the MCP tool list, or AGENTS.md:

```sh
UNITBOOK_OPERATOR_SEED=$(pass unitbook/operator-seed) unitbook admin issue --holder "Вася" > license.json
unitbook admin revoke <license_id> --root .
```

`revoke` edits the source tree (adds the id to `revoked.json`, bumps the patch version in
`pyproject.toml` and `src/unitbook/__init__.py`) and prints the tag command; it does not run
git, tag or push. Tagging and pushing the release stay a deliberate second action.

## License

Proprietary. Copyright (c) 2026 Gesamt Team. Licensed to named users only; see LICENSE.
