Idea Relations
Relations let you express how ideas connect to each other. Every relation has a source, a target, a type, and an optional note. Together, they form a directed graph that you can explore in the mind map or via the CLI.
Relation Types
Section titled “Relation Types”NeuralRepo supports six relation types. Each serves a distinct purpose.
| Type | Direction | Meaning |
|---|---|---|
related | A → B | General connection. A and B are conceptually related. |
parent | A → B | Hierarchical. A is the parent of B. Use this to break large ideas into sub-ideas. |
blocks | A → B | A blocks progress on B. B cannot move forward until A is resolved. |
inspires | A → B | A inspired the creation of B. A seed that grew into something new. |
duplicate | A → B | A is a duplicate of B. Yours to create by hand — duplicate detection does not use it. |
supersedes | A → B | A replaces B. The newer idea makes the older one obsolete. |
Creating Relations
Section titled “Creating Relations”Open an idea and click + Add Relation in the relations panel. Select the target idea, choose a relation type, and optionally add a note explaining the connection.
# Link two ideas with a relationnrepo link <source> <target> --type <type> --note "optional explanation"
# Examplesnrepo link 10 42 --type blocks --note "Need auth system before dashboard"nrepo link 5 18 --type parentnrepo link 3 7 --type inspires --note "The API idea grew out of this"curl -X POST https://neuralrepo.com/api/v1/map/relations \ -H "Authorization: Bearer $NREPO_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "source_idea_id": 10, "target_idea_id": 42, "relation_type": "blocks", "note": "Need auth system before dashboard" }'Cycle Detection
Section titled “Cycle Detection”Certain relation types enforce acyclicity to maintain a coherent graph.
| Behavior | Relation Types | What happens |
|---|---|---|
| Hard-blocked | blocks, parent | Cycles are rejected outright. You cannot create a relation that would form a loop. |
| Soft-blocked | supersedes | Cycles are rejected unless overridden with --force. |
| Not checked | related, inspires, duplicate | No cycle detection — these types are non-hierarchical. |
Cycle checking walks up to 50 hops along edges of the same type, so it catches long chains, not just direct loops. To override a soft-blocked cycle:
# CLInrepo link 3 7 --type supersedes --force
# APIPOST /api/v1/map/relations?force=trueViewing Relations
Section titled “Viewing Relations”# List all relations for an ideanrepo links <id>
# Explore the graph from a starting ideanrepo graph <id>
# Limit depth and filter by typenrepo graph <id> --depth 3 --type blocks,inspiresThe idea detail view shows a Relations panel listing all incoming and outgoing relations. Click any related idea to navigate to it.
For a visual overview, open the Mind Map to see ideas as nodes and relations as edges.
# Get the full graphGET /api/v1/map
# Response includes nodes and edges{ "nodes": [...], "edges": [ { "id": 1, "source": 10, "target": 42, "type": "blocks", "note": "Need auth system before dashboard", "score": null, "created_at": "2026-03-20T14:30:00Z" } ]}Auto-Created Relations
Section titled “Auto-Created Relations”NeuralRepo creates some relations for you. They are marked as system-created, which the mind map draws fainter and thinner than the ones you make yourself.
- Similarity: when a newly saved idea scores above the related threshold (default 0.5)
against one of its five nearest neighbours, a
relatedrelation is created — including when the pair also crosses the dedup threshold and becomes a duplicate detection. - Parenting: giving an idea a
parent_idcreates aparentrelation from the child to the parent. Changingparent_idlater deletes the old one and writes the new one.
The thresholds are configurable in your user settings. See Duplicate Detection for details.
What Merging Does to Relations
Section titled “What Merging Does to Relations”Merging two ideas with nrepo merge (or POST /api/v1/ideas/:id/merge) moves the
absorbed idea’s relations onto the kept idea, dropping any that would point an idea at
itself. Resolving a duplicate detection does not: it archives the matched idea, and archived
ideas are filtered out of every relation query, so their links simply stop appearing.
Removing Relations
Section titled “Removing Relations”nrepo unlink <source> <target>DELETE /api/v1/map/relations/:idOpen the idea detail, find the relation in the Relations panel, and click the remove button. On the mind map, right-click an edge and choose Remove link.