diff --git a/LICENSE b/LICENSE index 15ad343..be3f7b2 100644 --- a/LICENSE +++ b/LICENSE @@ -1,26 +1,6 @@ GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 - Copyright (C) 2025 Finance Guru Contributors - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - ---- - - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. diff --git a/LICENSING.md b/LICENSING.md new file mode 100644 index 0000000..556641f --- /dev/null +++ b/LICENSING.md @@ -0,0 +1,35 @@ +# Licensing + +`LICENSE` is the unmodified GNU Affero General Public License v3.0. The copyright notice and the grant for this program are copied below, unchanged, so the license file stays the text a detector can match. Moving them does not change the terms. + +```text + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2025 Finance Guru Contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +``` + +## What's free + +Everything tracked in this repository is free under that grant: version 3 of the GNU Affero General Public License, or, at your option, any later version. That includes the Python calculators, the SQLite ledger code, the skills, the specialist agents, the documentation, and the apps in this repo. There is no paid tier here, and no feature of this engine is held back. You can run it, change it, and share it. + +If you modify the program and other people interact with that modified version over a network, section 13 of `LICENSE` requires you to offer them the corresponding source. + +[Keepfolio](https://keepfolio.app/) is a separate commercial macOS product built on this engine. Its source is not in this repository, and this repository does not state Keepfolio's license. Finance Guru, in this repo, is the free self-hosted engine for someone who will use a terminal. Keepfolio is the polished product for someone who will not. + +[SnapTrade](https://snaptrade.com/), [SimpleFIN](https://www.simplefin.org/), and any model host are accounts you bring. This repository does not sell access to them. A broker CSV works without those accounts. Packages you install to run the engine keep their own licenses. + +The full license text is [LICENSE](LICENSE). diff --git a/README.md b/README.md index ca7d1d4..9c88aed 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,12 @@ _A self-hosted family office engine: typed Python calculators, a private SQLite ledger, and specialist agents that run inside Claude Code or Codex. Your data never leaves your machine unless you point it somewhere._ + + ![Terminal recording of the risk metrics CLI printing VaR, CVaR, Sharpe, Sortino, drawdown, volatility, beta, and alpha for TSLA against SPY](docs/images/demo-risk-metrics.gif) [![CI](https://github.com/AojdevStudio/Finance-Guru/actions/workflows/ci.yml/badge.svg)](https://github.com/AojdevStudio/Finance-Guru/actions/workflows/ci.yml) @@ -16,7 +22,7 @@ _A self-hosted family office engine: typed Python calculators, a private SQLite [![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE) [![GitHub stars](https://img.shields.io/github/stars/AojdevStudio/Finance-Guru?style=flat)](https://github.com/AojdevStudio/Finance-Guru/stargazers) -[**Quick Start**](#quick-start) · [**How it works**](#how-it-works) · [**Docs**](https://aojdevstudio.github.io/Finance-Guru/) · [**For agents**](#if-you-are-an-agent) +[**Quick Start**](#quick-start) · [**How it works**](#how-it-works) · [**What's free**](#whats-free--licensing) · [**Docs**](https://aojdevstudio.github.io/Finance-Guru/) · [**For agents**](#if-you-are-an-agent) @@ -37,6 +43,12 @@ You paste a screenshot into a chat model and ask whether a position is too big. +_A self-hosted family office for $0._ + +This is for a household that wants its books on its own machine: what you hold, the risk in it, and a check that refuses to guess when a number is missing. The software in this repository is free to clone and run. You bring a terminal, your own [Claude Code](https://code.claude.com/) or [Codex](https://github.com/openai/codex) session if you want the agents, and broker CSV exports you already have. + +_Not financial advice, and this project makes no return claims._ + Every number an agent quotes comes from a [Pydantic](https://docs.pydantic.dev/)-validated calculator with a CLI you can run yourself. Every irreversible action passes through a guardrail that blocks when its inputs are missing rather than guessing. The AI gets judgment. The math gets a test suite.
@@ -209,13 +221,21 @@ uv run pytest -m "not integration" Market data through [yfinance](https://github.com/ranaroussi/yfinance). Brokerage connectivity through [SnapTrade](https://snaptrade.com/). Bank and card connectivity through [SimpleFIN](https://www.simplefin.org/). Agent surfaces on [Claude Code](https://code.claude.com/) and [Codex](https://github.com/openai/codex). Diagrams drawn with the diagram-design skill; terminal recording with [vhs](https://github.com/charmbracelet/vhs). +## What's free / licensing + +Everything tracked in this repository is free under the [GNU Affero General Public License v3.0](LICENSE), or, at your option, any later version. That covers the Python calculators, the ledger code, the skills, the specialist agents, the docs, and the apps. There is no paid tier here, and no feature of this engine is held back. You can run it, change it, and share it. If you run a modified version as a network service, the license requires you to offer that version's source to the people who use it. + +[Keepfolio](https://keepfolio.app/) is a separate commercial macOS product built on this engine. Its source is not in this repository, and this repository does not state Keepfolio's license. This repo is the free terminal-native engine. Keepfolio is the polished app for someone who will not run one. + +The copyright notice and the same split are in [LICENSING.md](LICENSING.md). + ## License -Finance Guru is licensed under the [GNU Affero General Public License v3.0](LICENSE). +Finance Guru is licensed under the [GNU Affero General Public License v3.0](LICENSE), or any later version. See [LICENSING.md](LICENSING.md). ## Financial disclaimer -Finance Guru is educational software, not investment advice. Financial markets involve risk, including possible loss of principal. Verify all data and calculations independently and consult appropriately licensed financial, tax, and legal professionals before acting. +Not financial advice, and this project makes no return claims. Finance Guru is educational software. Financial markets involve risk, including possible loss of principal. Verify all data and calculations independently and consult appropriately licensed financial, tax, and legal professionals before acting. --- diff --git a/pyproject.toml b/pyproject.toml index 82d6adb..6309a58 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,6 +5,9 @@ description = "Add your description here" readme = "README.md" requires-python = ">=3.12" license = {text = "AGPL-3.0-or-later"} +# The copyright grant lives in LICENSING.md so LICENSE stays detectable as AGPL-3.0. +# Hatchling's default globs do not include that filename, so name it here. +license-files = ["LICENSE", "LICENSING.md"] dependencies = [ "beautifulsoup4>=4.13.5", "matplotlib>=3.10.8",