# exist-db/exist architecture

> Architecture diagram of the GitHub repository exist-db/exist, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/exist-db/exist
- Repository: https://github.com/exist-db/exist

## Overview

eXist-db is a native XML database and application platform. A principal workflow exposed by the sampled code is a client submitting an XPath/XQuery operation through the XML:DB service and receiving a resource-set result; local execution obtains database context and compiles or executes expressions. The tree also shows distinct HTTP/RESTXQ, indexing, backup/restore, administration, and vector-embedding capabilities. Their presence is supported by the file tree, but wiring for these unsampled subsystems is intentionally not inferred.

Main entry points: [`exist-core/src/main/java/org/exist/xmldb/LocalXPathQueryService.java`](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/LocalXPathQueryService.java) (Local XPath), [`exist-core/src/main/java/org/exist/collections/Collection.java`](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/collections/Collection.java) (Collections), [`exist-core/src/main/java/org/exist/Database.java`](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/Database.java) (Database lifecycle), [`exist-core/src/main/java/org/exist/xmldb/LocalXUpdateQueryService.java`](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/LocalXUpdateQueryService.java) (XUpdate service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["Client interfaces"]
  node_interactive_client["Interactive client"]
  node_http_entry["HTTP services<br/>[EXistServlet.java]"]
  node_remote_xpath["Remote XPath"]
  node_local_xpath["Local XPath"]
  node_in_txn_xpath["Transactional XPath"]
  node_xquery_api["XQuery API"]
  node_xupdate_service["XUpdate service"]
end

subgraph group_query["Query and storage"]
  node_database["Database lifecycle<br/>[Database.java]"]
  node_collections["Collections<br/>[Collection.java]"]
  node_persistent_docs["Persistent XML<br/>[DocumentImpl.java]"]
  node_index_service["Index operations"]
end

subgraph group_operations["Database operations"]
  node_backup["Backup<br/>[Backup.java]"]
  node_restore["Restore<br/>[Restore.java]"]
  node_ant_tasks["Ant tasks"]
end

subgraph group_extensions["Application extensions"]
  node_http_rest["REST server<br/>[RESTServer.java]"]
  node_restxq_cache["RESTXQ query cache"]
  node_vector_service["Vector embeddings"]
end

subgraph group_admin["Administration"]
  node_security_tasks["User and group tasks<br/>[AddUserTask.java]"]
end

node_client_actor(("XML:DB client"))

node_client_actor -->|"submits query"| node_local_xpath
node_interactive_client -->|"queries locally"| node_local_xpath
node_remote_xpath -->|"returns results"| node_client_actor
node_in_txn_xpath -->|"extends service"| node_local_xpath
node_local_xpath -->|"obtains broker"| node_database
node_local_xpath -->|"reads query context"| node_persistent_docs
node_local_xpath -->|"resolves collection"| node_collections
node_xupdate_service -->|"reads documents"| node_collections
node_xupdate_service -->|"applies updates"| node_persistent_docs
node_index_service -->|"reindexes collection"| node_collections
node_http_entry -->|"handles requests"| node_http_rest
node_restxq_cache -->|"compiles with broker"| node_database
node_backup -->|"backs up data"| node_collections
node_restore -->|"restores data"| node_collections
node_ant_tasks -->|"runs XML:DB tasks"| node_collections
node_security_tasks -->|"manages accounts"| node_database

click node_interactive_client "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/client/InteractiveClient.java"
click node_http_entry "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/http/servlets/EXistServlet.java"
click node_remote_xpath "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/RemoteXPathQueryService.java"
click node_local_xpath "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/LocalXPathQueryService.java"
click node_in_txn_xpath "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/txn/bridge/InTxnLocalXPathQueryService.java"
click node_xquery_api "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/EXistXQueryService.java"
click node_xupdate_service "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/LocalXUpdateQueryService.java"
click node_database "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/Database.java"
click node_collections "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/collections/Collection.java"
click node_persistent_docs "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/dom/persistent/DocumentImpl.java"
click node_index_service "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/LocalIndexQueryService.java"
click node_http_rest "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/http/RESTServer.java"
click node_restxq_cache "https://github.com/exist-db/exist/blob/develop/extensions/exquery/restxq/src/main/java/org/exist/extensions/exquery/restxq/impl/RestXqServiceCompiledXQueryCacheImpl.java"
click node_vector_service "https://github.com/exist-db/exist/blob/develop/extensions/vector/src/main/java/org/exist/vector/VectorEmbeddingService.java"
click node_backup "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/backup/Backup.java"
click node_restore "https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/backup/Restore.java"
click node_ant_tasks "https://github.com/exist-db/exist/blob/develop/exist-ant/src/main/java/org/exist/ant/AbstractXMLDBTask.java"
click node_security_tasks "https://github.com/exist-db/exist/blob/develop/exist-ant/src/main/java/org/exist/ant/AddUserTask.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_interactive_client,node_http_entry,node_remote_xpath,node_local_xpath,node_in_txn_xpath,node_xquery_api,node_xupdate_service,node_client_actor toneBlue
class node_database,node_collections,node_persistent_docs,node_index_service toneAmber
class node_backup,node_restore,node_ant_tasks toneMint
class node_http_rest,node_restxq_cache,node_vector_service toneRose
class node_security_tasks toneIndigo
```

## Components

### Client interfaces

- [Interactive client](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/client/InteractiveClient.java): `exist-core/src/main/java/org/exist/client/InteractiveClient.java`
- [HTTP services](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/http/servlets/EXistServlet.java): `exist-core/src/main/java/org/exist/http/servlets/EXistServlet.java`
- [Remote XPath](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/RemoteXPathQueryService.java): `exist-core/src/main/java/org/exist/xmldb/RemoteXPathQueryService.java`
- [Local XPath](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/LocalXPathQueryService.java): `exist-core/src/main/java/org/exist/xmldb/LocalXPathQueryService.java`
- [Transactional XPath](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/txn/bridge/InTxnLocalXPathQueryService.java): `exist-core/src/main/java/org/exist/xmldb/txn/bridge/InTxnLocalXPathQueryService.java`
- [XQuery API](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/EXistXQueryService.java): `exist-core/src/main/java/org/exist/xmldb/EXistXQueryService.java`
- [XUpdate service](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/LocalXUpdateQueryService.java): `exist-core/src/main/java/org/exist/xmldb/LocalXUpdateQueryService.java`

### Query and storage

- [Database lifecycle](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/Database.java): `exist-core/src/main/java/org/exist/Database.java`
- [Collections](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/collections/Collection.java): `exist-core/src/main/java/org/exist/collections/Collection.java`
- [Persistent XML](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/dom/persistent/DocumentImpl.java): `exist-core/src/main/java/org/exist/dom/persistent/DocumentImpl.java`
- [Index operations](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/xmldb/LocalIndexQueryService.java): `exist-core/src/main/java/org/exist/xmldb/LocalIndexQueryService.java`

### Database operations

- [Backup](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/backup/Backup.java): `exist-core/src/main/java/org/exist/backup/Backup.java`
- [Restore](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/backup/Restore.java): `exist-core/src/main/java/org/exist/backup/Restore.java`
- [Ant tasks](https://github.com/exist-db/exist/blob/develop/exist-ant/src/main/java/org/exist/ant/AbstractXMLDBTask.java): `exist-ant/src/main/java/org/exist/ant/AbstractXMLDBTask.java`

### Application extensions

- [REST server](https://github.com/exist-db/exist/blob/develop/exist-core/src/main/java/org/exist/http/RESTServer.java): `exist-core/src/main/java/org/exist/http/RESTServer.java`
- [RESTXQ query cache](https://github.com/exist-db/exist/blob/develop/extensions/exquery/restxq/src/main/java/org/exist/extensions/exquery/restxq/impl/RestXqServiceCompiledXQueryCacheImpl.java): `extensions/exquery/restxq/src/main/java/org/exist/extensions/exquery/restxq/impl/RestXqServiceCompiledXQueryCacheImpl.java`
- [Vector embeddings](https://github.com/exist-db/exist/blob/develop/extensions/vector/src/main/java/org/exist/vector/VectorEmbeddingService.java): `extensions/vector/src/main/java/org/exist/vector/VectorEmbeddingService.java`

### Administration

- [User and group tasks](https://github.com/exist-db/exist/blob/develop/exist-ant/src/main/java/org/exist/ant/AddUserTask.java): `exist-ant/src/main/java/org/exist/ant/AddUserTask.java`

### Other components

- **XML:DB client**

## Connections

- XML:DB client → Local XPath: submits query
- Interactive client → Local XPath: queries locally
- Remote XPath → XML:DB client: returns results
- Transactional XPath → Local XPath: extends service
- Local XPath → Database lifecycle: obtains broker
- Local XPath → Persistent XML: reads query context
- Local XPath → Collections: resolves collection
- XUpdate service → Collections: reads documents
- XUpdate service → Persistent XML: applies updates
- Index operations → Collections: reindexes collection
- HTTP services → REST server: handles requests
- RESTXQ query cache → Database lifecycle: compiles with broker
- Backup → Collections: backs up data
- Restore → Collections: restores data
- Ant tasks → Collections: runs XML:DB tasks
- User and group tasks → Database lifecycle: manages accounts
