Neuro-Cognitive Engine
NCE — Neuro-Cognitive Engine
Ein Multi-Tenant-Speicher- und Reasoning-Substrat für KI-Agenten, mit einer Reihe von darauf aufbauenden Geschäfts-Engines.
Agenten, die ein Geschäft betreiben, müssen sich Dinge merken, und das Gedächtnis muss korrekt sein: auf den richtigen Mandanten beschränkt, einer Quelle zurechenbar und unmöglich leise zu korrumpieren. NCE ist die Schicht, die dies bereitstellt, plus die vertikalen Engines, die es nutzen — procurement, sales, project, economy, inventory und andere.
Erstellt in Python auf Postgres, MongoDB, Redis und MinIO. Verfügbar über MCP (JSON-RPC 2.0) und REST.
Was tatsächlich hier ist
Python in | 103.762 Zeilen |
Testdateien | 391 |
Registrierte MCP-Tools | 115 |
Datenbankmigrationen | 48 |
Vertikale Engines mit Code auf main | 11 |
Dokumentationsseiten | 114 — lesen Sie sie hier |
Architekturentscheidungsaufzeichnungen | 8 |
CI-Jobs pro Pull-Request | 5 |
Die Zahlen werden aus dem Baum gezählt, nicht geschätzt. Die Tool-Anzahl wird durch einen Test (tests/test_tool_registry.py) bestätigt, sodass sie nicht von der Realität abweichen kann, ohne den Build zum Scheitern zu bringen.
Die Teile, die einen Blick wert sind
Die Mandantenisolierung wird von der Datenbank erzwungen, nicht durch Konvention. Jede mandantenbezogene Tabelle trägt ENABLE + FORCE ROW LEVEL SECURITY mit einer Richtlinie auf namespace_id. Der Anwendungscode filtert zusätzlich explizit, da eine Superuser-Verbindung FORCE RLS umgeht und ein Test, der dies vergisst, nichts beweist. tests/test_rls_catalog.py schlägt fehl, wenn eine Mandantentabelle hinzugefügt wird, ohne registriert zu sein.
Schreibberechtigung ist standardmäßig verweigert. Engines schreiben nicht die Daten der anderen. nce/config_data/node-ownership.json bildet (node_type, transition) → owning engine ab, und assert_owner verweigert alles, was an der Schreibstelle nicht registriert ist. Der Besitz kann pro Transition sein, nicht nur pro Knoten: Der ORDERED-Status einer Bestellposition gehört zu Procurement, DELIVERED zu Warehouse, INSTALLED zu Field Tech, und dieselbe Wächterfunktion drückt alle drei aus.
Das Audit-Log ist auf Datenbankebene nur zum Anhängen. event_log hat einen WORM-Trigger; UPDATE und DELETE sind widerrufen, nicht nur vermieden.
Autonomie ist begrenzt. Welt-schreibende Tools sind standardmäßig nur mit menschlicher Bestätigung, tragen einen Idempotenzschlüssel und zeichnen im Audit-Log auf. Wert- und Volumengrenzen, eine Whitelist und ein Kill-Switch sind ihnen vorgeschaltet. Das Wiederholen einer Aktion ist ein No-op und kein zweiter Schreibvorgang.
Geld und Kosten verlassen nie das Gebäude. Ein Whitelist-Feldprojektor (project(node, surface)) steuert, was eine externe Oberfläche erreicht. Marge und Kosten stehen auf keiner Whitelist.
Generierter Text ist fundiert. Prosa wird aus bereits im Graphen vorhandenen Fakten zusammengesetzt, wobei jede Behauptung mit dem Knoten verknüpft ist, von dem sie stammt, anstatt freihändig erstellt und später überprüft zu werden.
Daten können gleichzeitig aus zwei Systemen stammen. Ein pro-Namespace-Resolver entscheidet, ob eine bestimmte Funktion von Dynamics 365, von NCE oder von beiden liest, und protokolliert Abweichungen, wenn die beiden nicht übereinstimmen – so kann eine Migration gemessen werden, bevor sie festgelegt wird.
Vertikale Engines
Elf Engines haben Code auf main. Jede besitzt ihre eigenen Tabellen, ihre eigenen Knotentypen und eine dokumentierte Grenze zu den anderen.
procurement · product · agreements · vendors · sales · system_design · project · economy · inventory · dynamics365 · diagnostics
Die Engine-Suite ist auf 17 geplant. Sie wird inkrementell aufgebaut und ist nicht fertig; siehe Status unten.
Wie es gebaut wird
Die Engine-Suite wird nicht in einem Durchgang von Hand geschrieben. Sie wird als eine Abfolge kleiner Einheiten aufgebaut – 229 geplant, jede ein Anliegen, jede auf ihrem eigenen Branch und Commit – und jede Einheit besteht eine unabhängige adversarial Review, bevor sie akzeptiert wird.
Die Review wird von einer anderen Modellinstanz durchgeführt als der, die den Code geschrieben hat, mit der spezifischen Anweisung, es zu versuchen zu brechen und bei Unsicherheit standardmäßig abzulehnen. Das hat sich wiederholt als wichtig erwiesen:
Eine Änderung der Lagerbewegung wurde mit einer Graphprojektion ausgeliefert, die innerhalb der autoritativen Transaktion geschrieben wurde. Sie führte bei jedem zweiseitigen Verkehr zwischen denselben zwei Standorten zu einem Deadlock, bei 100% der Versuche. Lint bestanden, Typen bestanden, die Testsuite war grün. Die Review fand es und die Lösung war, sowohl die Zeilenschreibvorgänge als auch die Projektion nach einem kanonischen Schlüssel zu ordnen.
Eine Änderung des Event-Busses hätte Ereignisse als erfolgreich veröffentlicht markiert, während sie stillschweigend fallen gelassen wurden, weil ein Handler protokollierte und zurückkehrte, anstatt zu werfen. Die Review lehnte es zweimal ab, bevor etwas ausgeliefert wurde.
Ein Test, der eine Dezimalgenauigkeitsregel behauptete, bestand identisch, unabhängig davon, ob die Regel angewendet wurde oder nicht, weil seine einzige Fixture unter beiden Pfaden gleich rundete.
Die wiederkehrende Lektion ist, dass eine grüne Testsuite weniger aussagt, als es scheint. Die Eigenschaften, die fehlschlagen, sind normalerweise diejenigen, für die ein Docstring am zuversichtlichsten argumentiert und die kein Test tatsächlich unterscheidet.
Ausführen
cp .env.example .env # fill in the values
make local-up # Postgres, MongoDB, Redis, MinIO via docker compose
make lint typecheck # ruff + mypy
pytest -m "not integration" # unit tests, no database required
pytest -m integration # requires the stack aboveIntegrationstests überspringen, anstatt fehlzuschlagen, wenn keine Datenbank erreichbar ist. Ein grüner Exit-Code mit übersprungenen Tests ist kein bestandener Durchlauf – überprüfen Sie die Zählungen.
Dokumentation
Die vollständige Dokumentation ist veröffentlicht unter sindrehaugen.github.io/neuro-cognitive-engine – Architektur, die acht Architekturentscheidungsaufzeichnungen, pro-Engine Admin- und Benutzerhandbücher, die Shared-Core-Referenz und das MCP-Tool-Kochbuch.
Lohnenswert zu beginnen mit:
Architektur – der Vier-Datenbanken-Stack und wie die Schichten sitzen
Shared Core – Entitätsauflösung, Besitz, Autonomie-Governance, Redaktion
Multi-Tenancy – wie
FORCE ROW LEVEL SECURITYangewendet wirdMCP-Tool-Kochbuch – die Tool-Oberfläche mit Gating-Flags
ADRs – Entscheidungen und ihre Abwägungen
Layout
nce/ engine core: memory, graph, RLS, autonomy, signing, replay
nce/vertical_modules/ the business engines
nce/migrations/ idempotent SQL, re-applied on boot under an advisory lock
tests/ 391 files; integration tests marked and CI-wired
docs/ source for the published documentation
go/ launcher and hardware detection
trimcp-infra/ Terraform for AWS and GCP
deploy/ compose stacks and container imagesStatus
In aktiver Entwicklung. Elf von siebzehn Engines haben Code auf main; die zwölfte ist in Arbeit. Das Kernsubstrat – Mandantenisolierung, Besitz, Autonomie-Governance, Audit-Log, Signierung, Wiederholung – ist vollständig und wird von den darüber liegenden Engines verwendet.
Dieses Repository wird veröffentlicht, um die Architektur und den Engineering-Ansatz zu zeigen. Es ist kein verpacktes Produkt und es gibt keine Support-Verpflichtung.
Lizenz
Proprietär. Alle Rechte vorbehalten. Zur Überprüfung veröffentlicht; nicht zur Wiederverwendung lizenziert.
Sindre Løvlie Haugen · github.com/sindrehaugen
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
MCP-native Trust Infrastructure for AI Agents. Persistent encrypted memory with Trust Quotient.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sindrehaugen/neuro-cognitive-engine'
If you have feedback or need assistance with the MCP directory API, please join our Discord server