Deterministic knowledge network from technical documents. No LLM. No training. No cloud.
Inspired by cybernetics, OODA and VSM, but neither — a 12×7 deterministic knowledge matrix.
A generic framework for building deterministic knowledge networks from any domain-specific documents (PDF, TXT).
Core concept: (12 knowledge domains × 7 aspects) + 10 cross-sectional units = 94 Metasystem Units (ME).
Each ME is a self-contained knowledge unit with a formula, parameters, a score, and weighted connections to other MEs. Together they form a deterministic network that structures, links, and queries knowledge — without AI, without APIs, without internet.
| Principle | Meaning |
|---|---|
| Deterministic | Same input = same output. Always. No guessing. |
| Offline | Runs on a Raspberry Pi. No cloud required. |
| No LLM | No API calls, no training, no probabilities. |
| Traceable | Every connection has a verifiable source. |
| Domain-agnostic | The 12 domains are freely configurable (engineering, history, medicine, law...). |
| GPL v3 | All derivatives must stay open source. |
Source Documents (PDF/TXT)
↓
Keyword Miner — Extracts terms and parameters from texts
↓
94 Metasystem Units (ME)
├─ 84 Core ME (12 domains × 7 aspects)
└─ 10 Cross-sectional ME (domain-overarching)
↓
Refiner — Populates each ME with domain-specific values
↓
Network Calculator — Weighted connections between all ME
↓
Trigger (Cycle) — Runs all ME, stores results in SQLite
↓
Queries (Terminal / Telegram / API)
Each of the 12 domains passes through 7 aspects — the knowledge cycle. The cycle engine runs 72 time-steps (precession-based tick, independent of the 84 core MEs — the 72 steps represent a temporal pulse, not a 1:1 mapping to MEs):
1. Observe → What is? What signals are present?
2. Understand → What does it mean? Recognize patterns?
3. Formulate → Which rule applies? Calculate?
4. Decide → What to do? Prioritize?
5. Act → Execute. Produce results.
6. Check → Was the action correct?
7. Learn → What remains? Adapt?
(12 × 7) + 10 = 94 ME
The framework defines no fixed domains. You set them per project in me_constants.py:
| Field | Example Domains |
|---|---|
| Engineering | Material, Manufacturing, Quality, Maintenance, Control, Standards... |
| Medicine | Diagnosis, Symptoms, Medication, Surgery, Aftercare, Prevention... |
| History | Sources, Chronology, Archaeology, Linguistics, Reception... |
# 1. Clone
git clone https://github.com/StefanRohringer/me-system.git
cd me-system
# 2. Define your domains
# Edit me_constants.py — replace the 12 placeholder domains
# 3. Add source texts
mkdir txt_extracted
# Put your .txt files in txt_extracted/
# 4. Initialize database
python3 -m me_system.me_trigger init
# 5. Calculate network
python3 -m me_system.me_trigger network
# 6. Run cycle
python3 -m me_system.me_trigger cycle# Via environment variable:
export ME_PROJECT=/path/to/project
python3 -m me_system.me_trigger status
# Or by working directory:
cd /path/to/project
python3 -m me_system.me_trigger status# Show a single ME
python3 -m me_system.me_trigger me 22
# Show connections of an ME
python3 -m me_system.me_trigger links 22
# Network statistics
python3 -m me_system.me_trigger network
# Cluster analysis
python3 -m me_system.me_trigger cluster
# Full cycle run
python3 -m me_system.me_trigger cycle
# Search by keyword
python3 -m me_system.me_trigger search <keyword>
# Persistent cycle daemon
python3 -m me_system.me_daemon --loop
# Autonomous explorer daemon
python3 -m me_system.me_explorerNote: Legacy German commands (
zyklus,netzwerk,suche,verb,alle) are still supported as aliases.
After populating domains and running a cycle, querying a single ME looks like:
$ python3 -m me_system.me_trigger me 22
ME #22 — Domain 2 / Aspect 1 (Observe)
───────────────────────────────────────
Formula: h₂₁ = Σ(α_i · S_i)
Score: 0.74
Parameters: critical_temperature = 185°C
tolerance_range = ±0.3mm
Connections: → ME #11 (0.62)
→ ME #33 (0.48)
→ ME #07 (0.39)
Last cycle: 2026-04-15 22:34:12
Sources: 3 documents
Network overview:
$ python3 -m me_system.me_trigger network
ME-System Network
────────────────
Total ME: 94 (84 core + 10 cross-sectional)
Connections: 4371 weighted
Mean score: 0.286
Clusters: 13
Hub node: ME #01 (Metasystem)
Density: 42.3%
- Python ≥ 3.10 (no external dependencies)
- SQLite (part of Python standard library)
- No GPU. No cloud. No internet connection.
Tested on: Raspberry Pi (ARM), Linux x86, macOS.
my-project/
├── me_state.db (auto-created database)
├── txt_extracted/ (source texts as .txt)
├── analysen/ (analysis files)
└── logs/ (log files)
| File | Purpose |
|---|---|
__init__.py |
Package marker |
me_config.py |
Project configuration, path resolution |
me_constants.py |
Domains + aspects (edit per project) |
me_core.py |
Database + ME core logic |
me_network.py |
Weighted connections between ME |
me_trigger.py |
Query interface + cycle control |
me_cycle.py |
72-step cycle engine (precession-based time tick) |
me_refiner.py |
Keyword Miner — parameter extraction from texts |
me_query.py |
Knowledge gap search |
me_explorer.py |
Autonomous explorer daemon |
me_daemon.py |
Autonomous cycle daemon |
1. No hallucinations — Every output is based on real source documents. No guessing, no inventing.
2. Runs on a Raspberry Pi — ~200 MB RAM. No GPU. No cloud. 24/7.
3. Platform-independent — Linux, macOS, Windows. Python 3 + SQLite. Done.
4. Domain-agnostic — One framework for any knowledge domain. One domain set per project.
5. No black box — Every formula, every connection, every score is traceable and editable.
6. Scales linearly — More domains = more ME. The code stays the same.
7. Fully reproducible — Same input always produces the same output.
GNU General Public License v3.0
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
All derivatives and modified versions must also be published under GPL v3.