Metadata-Version: 2.4
Name: ai-monorepo
Version: 0.2.0
Summary: AI Monorepo — AI-agnostic versioned knowledge store with ingestion, index and MCP access
Author: Andreas Buis
License: MIT
Project-URL: Homepage, https://github.com/abuis78/ai-monorepo
Keywords: knowledge-base,markdown,mcp,llm,wiki,ai,rag
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Text Processing :: Markup :: Markdown
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: yt-dlp>=2024.1.1
Requires-Dist: pyyaml>=6.0
Requires-Dist: anthropic>=0.40
Requires-Dist: lancedb>=0.5
Requires-Dist: mcp>=1.0
Requires-Dist: pymupdf>=1.24
Requires-Dist: trafilatura>=1.8
Requires-Dist: truststore>=0.9
Provides-Extra: dev
Requires-Dist: ruff>=0.5; extra == "dev"
Provides-Extra: embed
Requires-Dist: fastembed>=0.3; extra == "embed"
Provides-Extra: audio
Requires-Dist: faster-whisper>=1.0; extra == "audio"
Dynamic: license-file

# AI Monorepo

AI-agnostisches, versioniertes Wissens-Repo als **Single Source of Truth** für beliebige AIs.
Heterogene Eingaben (YouTube, URLs, PDF, Audio, Bild, Slides) werden automatisch zu sauberem
Markdown aufbereitet und über einen **MCP-Server** für jede MCP-fähige AI abrufbar gemacht.

> Konzept & Entscheidungen: siehe `AI-Monorepo-Konzept.md` (im Begleit-Repo `MacOS-monitoring`).

## Zwei Repos — bewusst getrennt

| Repo | Inhalt |
|---|---|
| **dieses** (`ai-monorepo`) | **Code**: Ingestion, Index, MCP-Server, (später) App |
| **Store** (separat, privat) | **Daten = Source of Truth**: Markdown + Frontmatter, vom Tooling beschrieben |

Der Store-Pfad wird über die Config (`monorepo.example.toml` → `monorepo.toml`) gesetzt. Der
Code committet nie sich selbst in den Store.

## Struktur

```
src/monorepo/
  pipeline/          Ingestion-Orchestrierung
    adapters/        je Quellentyp ein Adapter (youtube, pdf, url, audio, …)
  index/             Vektorindex (LanceDB), aus dem Store gebaut
  mcp/               MCP-Server (search_context …)
  cli.py             Kommandozeilen-Einstieg
docs/
  frontmatter-schema.md   Vertrag für jeden Store-Eintrag
```

## Leitprinzipien

1. Embeddings/Index = wegwerfbarer Cache, nie Source of Truth (→ rebuild statt migrieren).
2. Originale werden zu Pointern; das Transkript ist die SoT.
3. Pipeline-AI veredelt beim Ablegen, Roh-Original bleibt immer erhalten.
4. MCP filtert zur Abfragezeit nach Lebenszyklus (`as_of`-Zeitreise möglich).
5. Lokal-first, „nur ich".

## Phasen-Status

- [x] **Phase 0** — Skelett & Konventionen
- [ ] Phase 1 — YouTube-Adapter
- [ ] Phase 2 — AI-Veredelung
- [ ] Phase 3 — Index (LanceDB)
- [ ] Phase 4 — MCP-Server
- [ ] Phase 5 — Lebenszyklus + weitere Adapter
- [ ] Phase 6 — Host + Mac-Fallback
- [ ] Phase 7 — App + CaptureKit (eigener Track)

## Entwicklung

```bash
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
ruff check .
```
