Research-Stack/5-Applications/nodupe/connectors/topological-engine/TOPOLOGICAL_ENGINE_PRIVATE_SETUP.md
2026-05-11 22:25:43 -05:00

2.9 KiB

PRIVATE Topological Engine Connector

Obsidian + Neo4j connector for Research Stack.

Authority boundary

  • Obsidian = local human-readable vault/workbench mirror
  • Neo4j = private graph traversal/query engine
  • Graph.lean = canonical graph authority
  • ENE = provenance/archive authority

Neo4j can discover candidate topology. It cannot certify proof, empirical validity, or basin promotion.

Security rule

This connector must never be public.

Allowed exposure:

  • localhost
  • VPN
  • tailnet
  • SSH tunnel
  • private reverse proxy

Forbidden exposure:

  • public internet
  • public Neo4j Browser/Bolt/HTTP
  • unauthenticated HTTP
  • public OpenAPI action
  • public webhook

Environment

export TOPOLOGICAL_ENGINE_TOKEN="YOUR_TOPOLOGICAL_ENGINE_TOKEN"
export OBSIDIAN_VAULT_PATH="/absolute/path/to/private/obsidian-vault"
export NEO4J_URI="bolt://127.0.0.1:7687"
export NEO4J_USER="neo4j"
export NEO4J_PASSWORD="YOUR_NEO4J_PASSWORD"

Never store secrets in GitHub, Notion, Google Drive, or Obsidian notes.

Mount

In server.js:

import topologicalEngineRouter from "./connectors/topological-engine/neo4j_obsidian_connector_router.js";
app.use("/topology", topologicalEngineRouter);

Endpoints

Mounted under /topology:

GET  /topology/health
POST /topology/obsidian/write-note
GET  /topology/obsidian/read-note?path=...
POST /topology/obsidian/search
POST /topology/neo4j/cypher
POST /topology/neo4j/upsert-road
POST /topology/neo4j/import-obsidian-links

Smoke tests

curl -H "Authorization: Bearer $TOPOLOGICAL_ENGINE_TOKEN" \
  http://127.0.0.1:3000/topology/health
curl -X POST http://127.0.0.1:3000/topology/obsidian/write-note \
  -H "Authorization: Bearer $TOPOLOGICAL_ENGINE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"Topological Engine Smoke Test","folder":"Research Stack/Plumbing","body":"Private Obsidian mirror online.","artifact_class":"TextNote","outcome":"hold"}'
curl -X POST http://127.0.0.1:3000/topology/neo4j/upsert-road \
  -H "Authorization: Bearer $TOPOLOGICAL_ENGINE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"sourceId":"artifact","sourceLabel":"Artifact","targetId":"fingerprint","targetLabel":"Fingerprint","relation":"NORMALIZES_TO","authority_scope":"candidate","outcome":"hold","torsion":1,"coherence":0.8}'

Required private dependency

npm install neo4j-driver

The router also expects Express to already exist in the server app.

Research Stack path

Raw artifact
→ ENE receipt
→ Artifact Normalization
→ Obsidian markdown mirror
→ Neo4j private traversal engine
→ candidate roads
→ Graph.lean audit
→ Graph Diff + Torsion
→ FAMM memory
→ Notion registry summary

Graph.lean audit rule

Neo4j path hit → candidate road → Graph.lean audit → graph diff/torsion → FAMM outcome

No Neo4j query can promote a basin by itself.