1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Architecture Overview
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Design philosophy
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Navegador is built around a single observation: **code structure and business knowledge are both graph-shaped, and they belong in the same graph.**
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Most context tools for AI agents handle one or the other — either they parse code (AST tools, code search) or they surface docs (RAG over wikis, ADR files). Navegador stores both in the same property graph and connects them with typed edges. An agent asking "what does `process_payment` do?" gets back not just the function signature and call graph, but the business rules that govern it and the architectural decision that shaped its design — in a single structured query.
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Architecture layers
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
┌──────────────────────────────────────────────────────────────────┐
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ INTELLIGENCE LAYER │
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ LLM providers (Anthropic · OpenAI · Ollama) │
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ Semantic search · NLP queries · Doc generation │
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├──────────────────────────────────────────────────────────────────┤
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ANALYSIS LAYER │
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ Impact · Trace · Churn · Deadcode · Cycles · Testmap │
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ Diff · Rename · Communities · Blast radius │
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├──────────────────────────────────────────────────────────────────┤
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ KNOWLEDGE LAYER │
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ │
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ Domain ──BELONGS_TO── Concept ──RELATED_TO── Rule │
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ │ │ │ │
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └──BELONGS_TO── Decision GOVERNS │ │
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ │ ↓ │
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ DECIDED_BY── Person (code nodes) │
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ │
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ WikiPage ──DOCUMENTS── Concept │
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ │
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├──────────────── ANNOTATES / GOVERNS / IMPLEMENTS ────────────────┤
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ │
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ CODE LAYER │
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ │
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ Repository ──CONTAINS── File ──CONTAINS── Class │
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ │ │ │
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ CONTAINS DEFINES │
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ↓ ↓ │
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ Function ──CALLS── Function │
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ │ │ │
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ DECORATES─Decorator TESTS──TestFn │
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ │ │
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ IMPORTS── Import │
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├──────────────────────────────────────────────────────────────────┤
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ENRICHMENT LAYER │
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ Framework metadata (Django · FastAPI · React · Rails · Spring) │
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ VCS (Git · Fossil) · CODEOWNERS · ADRs · OpenAPI · GraphQL │
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├──────────────────────────────────────────────────────────────────┤
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ STORE LAYER │
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ FalkorDB (falkordblite SQLite local / Redis cluster) │
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
└──────────────────────────────────────────────────────────────────┘
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Code layer
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Populated automatically by `navegador ingest`. Contains the structural facts extracted from source code across 13 languages: which functions exist, what they call, which classes inherit from which, what decorators are applied. Supports incremental ingestion (content hashing), watch mode, and parallel processing. This layer changes whenever code changes; re-ingest is the refresh mechanism.
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Knowledge layer
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Populated by humans (via `navegador add`) or semi-automatically (via wiki, Planopticon, ADR, OpenAPI, and PM ingestion). Contains the *why*: business concepts, architectural rules, recorded decisions, domain ownership, and documentation. This layer changes slowly and deliberately.
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Enrichment layer
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Framework enrichers run after AST parsing to add framework-specific metadata — Django model field types, FastAPI route paths, React component display names, etc. VCS adapters (Git, Fossil) provide blame, history, and churn data. CODEOWNERS files are parsed to populate `Person`→`File` ownership edges.
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Analysis layer
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Graph analysis commands operate over the populated code and knowledge layers without additional ingestion. They run Cypher traversals for impact analysis, cycle detection, dead code detection, test mapping, and community detection.
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Intelligence layer
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
NLP and LLM commands (`navegador ask`, `navegador semantic-search`, `navegador docs`) use configurable LLM providers (Anthropic, OpenAI, Ollama) to answer natural language queries grounded in graph data.
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Cross-layer edges
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Edge | Meaning | Direction |
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `ANNOTATES` | A knowledge node describes a code node | Concept/Rule → Function/Class/File |
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `GOVERNS` | A rule applies to a code node | Rule → Function/Class |
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `IMPLEMENTS` | A code node implements a concept or interface | Function/Class → Concept/Interface |
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `DOCUMENTS` | A wiki page documents a concept or code node | WikiPage → Concept/Function/Class |
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
These edges are created explicitly via `navegador annotate` or inferred during wiki/Planopticon ingestion when names match.
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## FalkorDB as the store
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Navegador uses [FalkorDB](https://www.falkordb.com/) — a property graph database with a Cypher query interface.
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Environment | Backend | Install |
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Local dev | `falkordblite` (SQLite) | Included in `pip install navegador` |
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Production / team | FalkorDB on Redis | `pip install "navegador[redis]"` |
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Both backends implement the same `GraphStore` interface. The query path is identical; only the connection setup differs. The SQLite backend uses an embedded engine — no daemon, no port, just a `.db` file.
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Ingestion pipeline
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Source code (13 languages via tree-sitter)
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
tree-sitter parser (per-language grammar)
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
+ incremental parsing (LRU cache, content hashing)
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
+ parallel ingestion (worker pool)
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
AST visitor (extract nodes + relationships)
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Framework enrichers (Django · FastAPI · React · Rails · Spring · Laravel · …)
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Graph diffing (only write changed nodes/edges)
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
GraphStore.merge_node / create_edge
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
FalkorDB (SQLite or Redis)
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Human curation (navegador add)
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Wiki pages (navegador wiki ingest)
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Planopticon output (navegador planopticon ingest)
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ADRs (navegador adr ingest)
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
OpenAPI / GraphQL schemas (navegador api ingest)
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
PM issues (navegador pm ingest --github)
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
External deps (navegador deps ingest)
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Submodules (navegador submodules ingest)
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
KnowledgeIngester / WikiIngester / PlanopticonIngester / …
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
GraphStore.merge_node / create_edge
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
FalkorDB (same database)
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
147
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
148
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
All ingesters write to the same graph. There is no separate code database and knowledge database.
149
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
150
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
151
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
152
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Query and analysis path
153
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
154
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
155
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
User / agent
156
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
157
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼ CLI command, MCP tool call, or Python SDK
158
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador context / function / explain / search / impact / trace / ...
159
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
160
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
161
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ContextLoader / AnalysisEngine (builds Cypher query)
162
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
163
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
164
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
GraphStore.query(cypher) ← MCP: query validation + complexity check
165
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
166
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
167
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
FalkorDB (SQLite or Redis)
168
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
169
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
170
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ContextBundle / AnalysisResult (structured result)
171
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
172
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
173
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
JSON / Markdown / rich terminal output
174
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
175
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
176
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
`ContextLoader` handles context retrieval commands (`function`, `class`, `explain`, etc.). `AnalysisEngine` handles graph analysis commands (`impact`, `trace`, `deadcode`, `cycles`, `churn`, `testmap`). Both construct Cypher queries, fetch results from `GraphStore`, and return structured output. The CLI formats output for the terminal; the MCP server returns JSON; the Python SDK returns typed Python objects.
177
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
178
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
179
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
180
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Cluster architecture
181
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
182
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
For team and CI environments, navegador supports a cluster mode backed by a shared Redis graph:
183
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
184
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
185
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Multiple agents / CI runners
186
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
187
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
188
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador (each instance)
189
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│
190
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
▼
191
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
┌────────────────────────────────────────┐
192
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ Shared Redis │
193
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── FalkorDB graph (shared state) │
194
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── Pub/sub (event broadcast) │
195
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── Task queue (ingest jobs) │
196
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── Sessions (agent state) │
197
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── Checkpoints (long-running tasks) │
198
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └── Observability (metrics, traces) │
199
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
└────────────────────────────────────────┘
200
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
201
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
202
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Configure with `[cluster]` in `.navegador/config.toml`. See [Configuration](../getting-started/configuration.md) for details.
203
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!