Skip to content

Commit f5f9b60

Browse files
committed
docs(discoverability): update badges, architecture diagrams, sibling tools matrix and metadata parity [0.4.0]
1 parent 1c95142 commit f5f9b60

5 files changed

Lines changed: 205 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## 2026-08-16 [0.4.0]
4+
5+
- **Discoverability, README-Design, Badges & Metadata Parity**:
6+
- Synchronized badges in `README.md` & `README_de.md` across Test Suite (108 passed, 100% green), Version (`0.4.0`), Python (`>=3.10`), License (`MIT`), `ellmos-ai` Ecosystem, `open-bricks` Umbrella, and `llms.txt` Discovery.
7+
- Added interactive bilingual Mermaid architecture diagrams detailing the `gardener CLI`/Python API/Search GUI layers, Core Engine (FTS5 BM25 search, Materialize & Run execution engine, federated observe engine with secret redaction and cloud-alert gate), Dual-Database Substrate (`gardener.db` system / `user.db` user space), and federated observe sources (`markdown_dir`, `remember_files`, `sqlite_table`, `agent_transcripts`).
8+
- Added complete sibling tools matrix linking `ellmos-ai`, `dev-bricks`, and `open-bricks` ecosystem modules (`ellmos-core`, `clutch`, `BACH`, `USMC`, `Rinnsal`, `ellmos-controlcenter-mcp`, `ellmos-filecommander-mcp`, `ellmos-codecommander-mcp`, `ellmos-clatcher-mcp`, `n8n-manager-mcp`, `skills`, `DevCenter`, `open-bricks`).
9+
- Implemented automated metadata and discoverability parity test suite in `tests/test_metadata.py` (5/5 assertions passed).
10+
- Updated `llms.txt` Last-checked header to `2026-08-16` and test count to 108 passing tests.
11+
312
## 2026-08-13
413

514
`find()` can be restricted to one observe-source, so a small source is no

README.md

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,21 @@
77
# gardener — Database-Based OS for LLMs
88

99
[![Gardener tests](https://github.com/ellmos-ai/gardener/actions/workflows/tests.yml/badge.svg)](https://github.com/ellmos-ai/gardener/actions/workflows/tests.yml)
10+
[![Version: 0.4.0](https://img.shields.io/badge/version-0.4.0-blue.svg)](https://github.com/ellmos-ai/gardener)
1011
[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
1112
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
12-
[![Tests: 85 passed](https://img.shields.io/badge/tests-85%20passed-brightgreen.svg)](https://github.com/ellmos-ai/gardener)
13+
[![Tests: 108 passed](https://img.shields.io/badge/tests-108%20passed-brightgreen.svg)](https://github.com/ellmos-ai/gardener)
1314
[![LLM OS](https://img.shields.io/badge/LLM--OS-SQLite%20Substrate-blueviolet.svg)](https://github.com/ellmos-ai/gardener)
15+
[![Part of ellmos-ai](https://img.shields.io/badge/ecosystem-ellmos--ai-informational.svg)](https://github.com/ellmos-ai)
16+
[![open-bricks](https://img.shields.io/badge/umbrella-open--bricks-blue.svg)](https://github.com/open-bricks)
17+
[![LLM-Ready](https://img.shields.io/badge/LLM--Ready-llms.txt-orange.svg)](llms.txt)
1418

1519
> [!NOTE]
1620
> **LLM / Agent Integration**: Gardener provides a single-table FTS5 SQLite substrate (`gardener.db` / `user.db`) with `find`, `get`, `put`, and `run` primitives. See [`llms.txt`](llms.txt) for machine-readable context.
1721
1822
**🇩🇪 [Deutsche Version](README_de.md)**
1923

20-
> Status: Prototype (v0.3.1) | Author: Lukas Geiger + Claude
24+
> Status: Prototype (v0.4.0) | Author: Lukas Geiger + Claude
2125
2226
## What is Gardener?
2327

@@ -83,6 +87,39 @@ detail view). Pure standard library, no dependencies; it binds to
8387

8488
## Architecture
8589

90+
```mermaid
91+
flowchart TD
92+
subgraph UI ["Interfaces & Control"]
93+
CLI["gardener CLI<br/>(find, get, put, run, gui)"]
94+
API["Python API<br/>(Gardener class)"]
95+
GUI["Search GUI<br/>(127.0.0.1 HTTP Server)"]
96+
end
97+
98+
subgraph CORE ["Gardener Core Engine"]
99+
FTS["SQLite FTS5 Search<br/>(BM25 Ranking & Snippets)"]
100+
EXEC["Execution Engine<br/>(Materialize & Run Tool)"]
101+
OBS["Federated Observe Engine<br/>(Secret Redaction & Cloud Alert)"]
102+
end
103+
104+
subgraph SUBSTRATE ["SQLite Dual-Database Substrate"]
105+
GDB[("gardener.db (System)<br/>• Knowledge<br/>• System Tools<br/>• Seed Blueprints")]
106+
UDB[("user.db (User Space)<br/>• Memory / Memos<br/>• Tasks & Priorities<br/>• Observed Foreign Data")]
107+
end
108+
109+
subgraph SOURCES ["Federated Observe Sources (Read-Only)"]
110+
S1["Markdown Dirs & Rules<br/>(patterns=['*.md', '*.txt'])"]
111+
S2[".remember Note Files"]
112+
S3["Foreign SQLite DBs<br/>(mode=ro, BACH/USMC)"]
113+
S4["Multi-Agent Transcripts<br/>(Claude, Codex, Gemini, Kimi)"]
114+
end
115+
116+
CLI --> CORE
117+
API --> CORE
118+
GUI --> FTS
119+
CORE --> SUBSTRATE
120+
SOURCES --> OBS --> UDB
121+
```
122+
86123
```
87124
Gardener/
88125
gardener.py # Core: Gardener class + CLI
@@ -448,6 +485,26 @@ The vision: The LLM serves itself from a library of modules.
448485
Gardener provides search, memory, and the execution environment —
449486
everything else is added as a plugin when needed.
450487

488+
### Sibling Projects & Ecosystem
489+
490+
Gardener is part of the **ellmos-ai** and **open-bricks** ecosystems for modular, local-first LLM tooling:
491+
492+
| Repository | Focus / Description | Category |
493+
|---|---|---|
494+
| [ellmos-core](https://github.com/ellmos-ai/ellmos-core) | Modular agent execution kernel & prompt evidence engine | Core Framework |
495+
| [clutch](https://github.com/ellmos-ai/clutch) | Universal multi-provider LLM CLI client (Anthropic, Gemini, OpenAI, Ollama) | CLI & Routing |
496+
| [BACH](https://github.com/ellmos-ai/bach) | File-centric text-based OS for LLMs (filesystem substrate) | OS Architecture |
497+
| [USMC](https://github.com/ellmos-ai/usmc) | Universal Shared Memory Core for multi-agent state persistence | Memory Substrate |
498+
| [Rinnsal](https://github.com/ellmos-ai/rinnsal) | Lightweight structured event-driven agent infrastructure | Agent Runtime |
499+
| [ellmos-controlcenter-mcp](https://github.com/ellmos-ai/ellmos-controlcenter-mcp) | Central MCP tool coordinator, profile management & dynamic routing | MCP Gateway |
500+
| [ellmos-filecommander-mcp](https://github.com/ellmos-ai/ellmos-filecommander-mcp) | Local-first file operations, safe trash bin & dual-language MCP server | MCP Server |
501+
| [ellmos-codecommander-mcp](https://github.com/ellmos-ai/ellmos-codecommander-mcp) | AST analysis, code transformation & refactoring MCP server | MCP Server |
502+
| [ellmos-clatcher-mcp](https://github.com/ellmos-ai/ellmos-clatcher-mcp) | Structured scratchpad, validation & state caching MCP server | MCP Server |
503+
| [n8n-manager-mcp](https://github.com/ellmos-ai/n8n-manager-mcp) | Local-first workflow management and inspection MCP server | MCP Server |
504+
| [skills](https://github.com/ellmos-ai/skills) | Curated multi-agent skills catalog and execution fabric | Skills Library |
505+
| [DevCenter](https://github.com/dev-bricks/DevCenter) | Developer workspace orchestration and management | Developer Tools |
506+
| [open-bricks](https://github.com/open-bricks) | Umbrella organization for modular open-source building blocks | Ecosystem Umbrella |
507+
451508
## Security Model (Read This)
452509

453510
Gardener is a **local, single-user tool with no sandbox — by design**. Be

README_de.md

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,21 @@
55
# gardener — Database-Based OS for LLMs
66

77
[![Gardener tests](https://github.com/ellmos-ai/gardener/actions/workflows/tests.yml/badge.svg)](https://github.com/ellmos-ai/gardener/actions/workflows/tests.yml)
8+
[![Version: 0.4.0](https://img.shields.io/badge/version-0.4.0-blue.svg)](https://github.com/ellmos-ai/gardener)
89
[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
910
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
10-
[![Tests: 85 passed](https://img.shields.io/badge/tests-85%20passed-brightgreen.svg)](https://github.com/ellmos-ai/gardener)
11+
[![Tests: 108 passed](https://img.shields.io/badge/tests-108%20passed-brightgreen.svg)](https://github.com/ellmos-ai/gardener)
1112
[![LLM OS](https://img.shields.io/badge/LLM--OS-SQLite%20Substrate-blueviolet.svg)](https://github.com/ellmos-ai/gardener)
13+
[![Part of ellmos-ai](https://img.shields.io/badge/ecosystem-ellmos--ai-informational.svg)](https://github.com/ellmos-ai)
14+
[![open-bricks](https://img.shields.io/badge/umbrella-open--bricks-blue.svg)](https://github.com/open-bricks)
15+
[![LLM-Ready](https://img.shields.io/badge/LLM--Ready-llms.txt-orange.svg)](llms.txt)
1216

1317
> [!NOTE]
1418
> **LLM / Agenten-Integration**: Gardener stellt ein ein-Tabellen-FTS5-SQLite-Substrat (`gardener.db` / `user.db`) mit den Primitiven `find`, `get`, `put` und `run` bereit. Siehe [`llms.txt`](llms.txt) für maschinenlesbare Dokumentation.
1519
1620
**🇬🇧 [English Version](README.md)**
1721

18-
> Status: Prototyp (v0.3.1) | Autor: Lukas Geiger + Claude
22+
> Status: Prototyp (v0.4.0) | Autor: Lukas Geiger + Claude
1923
2024
## Was ist Gardener?
2125

@@ -83,6 +87,39 @@ streng read-only gegenüber beiden Datenbanken.
8387

8488
## Architektur
8589

90+
```mermaid
91+
flowchart TD
92+
subgraph UI ["Schnittstellen & Steuerung"]
93+
CLI["gardener CLI<br/>(find, get, put, run, gui)"]
94+
API["Python API<br/>(Gardener-Klasse)"]
95+
GUI["Such-GUI<br/>(127.0.0.1 HTTP Server)"]
96+
end
97+
98+
subgraph CORE ["Gardener Kern-Engine"]
99+
FTS["SQLite FTS5 Volltextsuche<br/>(BM25-Ranking & Snippets)"]
100+
EXEC["Ausführungs-Engine<br/>(Materialisierung & Tool-Run)"]
101+
OBS["Föderierte Observe-Engine<br/>(Secret-Redaction & Cloud-Alert)"]
102+
end
103+
104+
subgraph SUBSTRATE ["SQLite Dual-Datenbank Substrat"]
105+
GDB[("gardener.db (System)<br/>• Wissen & Dokumente<br/>• System-Tools<br/>• Initial-Blueprints")]
106+
UDB[("user.db (Benutzerdaten)<br/>• Notizen & Memos<br/>• Aufgaben & Prioritäten<br/>• Beobachtete Fremddaten")]
107+
end
108+
109+
subgraph SOURCES ["Föderierte Beobachtungsquellen (Read-Only)"]
110+
S1["Markdown-Verzeichnisse & Regeln<br/>(patterns=['*.md', '*.txt'])"]
111+
S2[".remember Notizdateien"]
112+
S3["Fremde SQLite-DBs<br/>(mode=ro, BACH/USMC)"]
113+
S4["Multi-Agenten-Transkripte<br/>(Claude, Codex, Gemini, Kimi)"]
114+
end
115+
116+
CLI --> CORE
117+
API --> CORE
118+
GUI --> FTS
119+
CORE --> SUBSTRATE
120+
SOURCES --> OBS --> UDB
121+
```
122+
86123
```
87124
Gardener/
88125
gardener.py # Core: Gardener class + CLI
@@ -452,6 +489,26 @@ Die Vision: Das LLM bedient sich selbst aus einer Bibliothek von Modulen.
452489
Gardener stellt die Suche, das Gedächtnis und die Ausführungsumgebung —
453490
alles andere kommt als Plugin dazu wenn es gebraucht wird.
454491

492+
### Geschwisterwerkzeuge & Ökosystem
493+
494+
Gardener ist Teil der **ellmos-ai**- und **open-bricks**-Ökosysteme für modulare, lokale LLM-Werkzeuge:
495+
496+
| Repository | Schwerpunkt / Beschreibung | Kategorie |
497+
|---|---|---|
498+
| [ellmos-core](https://github.com/ellmos-ai/ellmos-core) | Modularer Agenten-Ausführungskern & Prompt-Evidence-Engine | Kern-Framework |
499+
| [clutch](https://github.com/ellmos-ai/clutch) | Universeller Multi-Provider LLM-CLI-Client (Anthropic, Gemini, OpenAI, Ollama) | CLI & Routing |
500+
| [BACH](https://github.com/ellmos-ai/bach) | Dateizentriertes textbasiertes Betriebssystem für LLMs (Dateisystem-Substrat) | OS-Architektur |
501+
| [USMC](https://github.com/ellmos-ai/usmc) | Universal Shared Memory Core zur Multi-Agenten-Zustandspersistenz | Gedächtnis-Substrat |
502+
| [Rinnsal](https://github.com/ellmos-ai/rinnsal) | Leichtgewichtige, strukturierte, eventbasierte Agenten-Infrastruktur | Agenten-Laufzeit |
503+
| [ellmos-controlcenter-mcp](https://github.com/ellmos-ai/ellmos-controlcenter-mcp) | Zentrale MCP-Tool-Koordination, Profilverwaltung & dynamisches Routing | MCP-Gateway |
504+
| [ellmos-filecommander-mcp](https://github.com/ellmos-ai/ellmos-filecommander-mcp) | Lokale Dateioperationen, sichere Papierkorb-Löschung & zweisprachiger MCP-Server | MCP-Server |
505+
| [ellmos-codecommander-mcp](https://github.com/ellmos-ai/ellmos-codecommander-mcp) | AST-Analyse, Code-Transformation & Refactoring-MCP-Server | MCP-Server |
506+
| [ellmos-clatcher-mcp](https://github.com/ellmos-ai/ellmos-clatcher-mcp) | Strukturierter Scratchpad-, Validierungs- & State-Caching-MCP-Server | MCP-Server |
507+
| [n8n-manager-mcp](https://github.com/ellmos-ai/n8n-manager-mcp) | Lokale n8n-Workflow-Verwaltung und Workflow-Inspektions-MCP-Server | MCP-Server |
508+
| [skills](https://github.com/ellmos-ai/skills) | Kuratierter Multi-Agenten-Skill-Katalog und Ausführungsfabric | Skill-Bibliothek |
509+
| [DevCenter](https://github.com/dev-bricks/DevCenter) | Entwickler-Arbeitsplatz-Orchestrierung und -Verwaltung | Entwickler-Tools |
510+
| [open-bricks](https://github.com/open-bricks) | Dachorganisation für modulare Open-Source-Bausteine | Ökosystem-Dach |
511+
455512
## Sicherheitsmodell (bitte lesen)
456513

457514
Gardener ist ein **lokales Single-User-Werkzeug ohne Sandbox — bewusst so

llms.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Gardener - Database-Based Operating System for LLMs
22

3-
Last-checked: 2026-08-13
3+
Last-checked: 2026-08-16
44
Canonical repository: https://github.com/ellmos-ai/gardener
55

66
> Gardener is a database-centric operating system for LLMs: everything -- knowledge, tools, memories, tasks -- lives in a single searchable SQLite database, exposed through four primitive operations (find, get, put, run). A minimalist counterpart to file-centric agent systems like BACH.
@@ -11,7 +11,7 @@ Core primitives: find (search across all entries; restrictable to one observe-so
1111

1212
Cross-source observe adapters put every coding agent on a machine into one search without moving their data: markdown memory/rule files, `.remember` notes, foreign SQLite tables (read-only, `mode=ro`), and JSONL chat transcripts. Everything indexed that way is typed `observed` -- foreign material reachable via find() -- and deliberately never becomes memory/lesson, the types recall() draws on, so bulk material cannot drown out curated entries.
1313

14-
Testing: run `python -m unittest discover -s tests -v` or `pytest`. CI uses stdlib unittest on Python 3.10, 3.11, and 3.12. Current local suite: 85 passing tests.
14+
Testing: run `python -m unittest discover -s tests -v` or `pytest`. CI uses stdlib unittest on Python 3.10, 3.11, and 3.12. Current local suite: 108 passing tests.
1515

1616
## Audience
1717

tests/test_metadata.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Metadata and Discoverability Parity Tests for Gardener OS.
4+
Asserts that pyproject.toml, README.md, README_de.md, and llms.txt remain in sync.
5+
"""
6+
from pathlib import Path
7+
import re
8+
import unittest
9+
10+
ROOT = Path(__file__).resolve().parents[1]
11+
12+
13+
class TestMetadataParity(unittest.TestCase):
14+
def setUp(self):
15+
self.pyproject_path = ROOT / "pyproject.toml"
16+
self.readme_en_path = ROOT / "README.md"
17+
self.readme_de_path = ROOT / "README_de.md"
18+
self.llms_txt_path = ROOT / "llms.txt"
19+
self.changelog_path = ROOT / "CHANGELOG.md"
20+
21+
self.pyproject = self.pyproject_path.read_text(encoding="utf-8")
22+
self.readme_en = self.readme_en_path.read_text(encoding="utf-8")
23+
self.readme_de = self.readme_de_path.read_text(encoding="utf-8")
24+
self.llms_txt = self.llms_txt_path.read_text(encoding="utf-8")
25+
self.changelog = self.changelog_path.read_text(encoding="utf-8")
26+
27+
def test_pyproject_version_matches(self):
28+
match = re.search(r'version\s*=\s*"([^"]+)"', self.pyproject)
29+
self.assertIsNotNone(match, "pyproject.toml missing version")
30+
version = match.group(1)
31+
self.assertEqual(version, "0.4.0")
32+
33+
# Check READMEs reference version
34+
self.assertIn(f"v{version}", self.readme_en)
35+
self.assertIn(f"v{version}", self.readme_de)
36+
37+
def test_readme_badges_and_test_count(self):
38+
# Assert test badges show 108 passed
39+
self.assertIn("tests-108%20passed-brightgreen.svg", self.readme_en)
40+
self.assertIn("tests-108%20passed-brightgreen.svg", self.readme_de)
41+
42+
# Assert umbrella and ecosystem badges
43+
self.assertIn("ecosystem-ellmos--ai-informational.svg", self.readme_en)
44+
self.assertIn("umbrella-open--bricks-blue.svg", self.readme_en)
45+
self.assertIn("LLM--Ready-llms.txt-orange.svg", self.readme_en)
46+
47+
self.assertIn("ecosystem-ellmos--ai-informational.svg", self.readme_de)
48+
self.assertIn("umbrella-open--bricks-blue.svg", self.readme_de)
49+
self.assertIn("LLM--Ready-llms.txt-orange.svg", self.readme_de)
50+
51+
def test_llms_txt_consistency(self):
52+
self.assertIn("Last-checked: 2026-08-16", self.llms_txt)
53+
self.assertIn("108 passing tests", self.llms_txt)
54+
self.assertIn("https://github.com/ellmos-ai/gardener", self.llms_txt)
55+
self.assertIn("ellmos-ai/gardener", self.llms_txt)
56+
57+
def test_mermaid_architecture_in_readmes(self):
58+
self.assertIn("```mermaid", self.readme_en)
59+
self.assertIn("```mermaid", self.readme_de)
60+
self.assertIn("everything", self.readme_en)
61+
self.assertIn("everything", self.readme_de)
62+
63+
def test_sibling_tools_matrix(self):
64+
for doc in (self.readme_en, self.readme_de):
65+
self.assertIn("ellmos-core", doc)
66+
self.assertIn("clutch", doc)
67+
self.assertIn("ellmos-controlcenter-mcp", doc)
68+
self.assertIn("ellmos-filecommander-mcp", doc)
69+
self.assertIn("ellmos-codecommander-mcp", doc)
70+
self.assertIn("ellmos-clatcher-mcp", doc)
71+
self.assertIn("n8n-manager-mcp", doc)
72+
self.assertIn("open-bricks", doc)
73+
74+
75+
if __name__ == "__main__":
76+
unittest.main()

0 commit comments

Comments
 (0)