---
sidebar_position: 8
title: "Architecture decision records"
---

<!-- Generated by scripts/adr-index.js: run `npm run adr-index` in docs/site after adding an ADR. -->

# Architecture decision records

An ADR records a decision about a boundary, an ownership, cross-cutting configuration or a major trade-off: its context, the decision and its consequences. They live in [`docs/adr/`](https://github.com/jupyter-naas/abi/tree/main/docs/adr), one file each, named `YYYYMMDD_topic.md`; add one when a change makes such a decision (see [Contribute to ABI](/developer-guide/contributing/overview#conventions)). 51 are listed here, oldest first within a group.

## Deployment, releases and documentation

- [Deploy a project with Dokploy](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261013_dokploy-deployment.md) (2026-10-13)
- [The ABI repository runs on NATS; Dagster and RabbitMQ are a legacy profile](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261015_repository-runs-on-nats.md) (2026-10-15)
- [A v2 branch carries 2.x fixes, and only main moves :latest](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261015_v2-maintenance-branch.md) (2026-10-15)
- [Docs site: a User guide and a Developer guide](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261018_docs-user-and-developer-guides.md) (2026-10-18)

## Nexus

- [Local code workspaces (Slides parity)](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260903_local-code-workspaces-slides-parity.md) (2026-09-03)
- [Nexus automatic session renewal](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260908_nexus_session_renewal.md) (2026-09-08)
- [Nexus identity graph for event logs](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260910_nexus-identity-graph-for-events.md) (2026-09-10)
- [Nexus office agent visibility follows the caller's feature access](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260916_office-agent-visibility-by-role.md) (2026-09-16)
- [Abi is always enabled, and naas_abi agents are packed in the chat roster](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260917_abi-orchestrator-always-on-and-packed.md) (2026-09-17)
- [Skills are created by a Skills office agent, not drafted into the chat](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260917_skills-office-agent.md) (2026-09-17)
- [Module graph map layers](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260921_module_graph_map_layers.md) (2026-09-21)
- [Sign-up lock and brute-force limits](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260924_auth-signup-and-rate-limits.md) (2026-09-24)
- [Nexus secret key resolution](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260924_nexus-secret-key-resolution.md) (2026-09-24)
- [No default credentials](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260924_no-default-credentials.md) (2026-09-24)
- [Client vs. employer on an act of working](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260930_personnel-client-vs-employer.md) (2026-09-30)
- [Nexus search by topic](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261001_nexus-search-topics.md) (2026-10-01)
- [Nexus settings design system](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261001_nexus-settings-design-system.md) (2026-10-01)
- [People intelligence apart from personnel; intelligence modules](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261002_people-intelligence-and-intelligence-modules.md) (2026-10-02)
- [Super admins manage kernel service data from the System app](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261002_sysadmin-service-data.md) (2026-10-02)
- [Nexus Maps catalog: server-side layers, basemaps and cross-workspace access](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261012_nexus-maps-catalog-and-access.md) (2026-10-12)
- [Nexus Maps groups: a data property of feeds](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261013_nexus-maps-groups.md) (2026-10-13)
- [Nexus Maps: module manifests, data in object storage](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261013_nexus-maps-module-manifests.md) (2026-10-13)
- [Nexus Maps: initial workspace setup in config.*.yaml](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261013_nexus-maps-workspace-config.md) (2026-10-13)
- [Nexus users are managed in the platform, not in config](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261014_nexus-platform-managed-users.md) (2026-10-14)

## Data, documents and events

- [DuckLake as the Dataset Service Backend](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260903_ducklake-dataset-backend.md) (2026-09-03)
- [Portable document service](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260909_portable-document-service.md) (2026-09-09)
- [Dataset compaction through Dagster](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260910_dataset-compaction-dagster.md) (2026-09-10)
- [LangGraph checkpoints through the document service](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260922_document-service-checkpoints.md) (2026-09-22)
- [Engine agent memory in the Document Service, stored as increments](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261002_engine-agent-memory-in-documents.md) (2026-10-02)
- [Archiving the event log into the Dataset Service](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261006_event-log-archive.md) (2026-10-06)
- [Shared storage for the event log and the activity log](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261006_shared-event-and-activity-log-storage.md) (2026-10-06)

## NATS, modules and the kernel

- [Network domain boundaries and independent module lifecycle](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260922_nats-domain-boundaries-module-lifecycle.md) (2026-09-22)
- [NATS RPC payload limits and uncertain outcomes](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260922_nats-rpc-failure-semantics.md) (2026-09-22)
- [Standalone protobuf contracts and NATS SDK](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260922_standalone-proto-sdk.md) (2026-09-22)
- [Module discovery registry](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260923_module-discovery-registry.md) (2026-09-23)
- [Remote agent proxies and conservative invocation ownership](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260923_remote-agent-proxy.md) (2026-09-23)
- [SDK service facades and scoped module access](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260923_sdk-service-facades-and-module-context.md) (2026-09-23)
- [Chunked NATS object and model transfers](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260924_chunked-nats-transfers.md) (2026-09-24)
- [NATS request ownership and remote agent output](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260924_nats-review-reliability.md) (2026-09-24)
- [Remote model registry and LangChain proxies](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20260924_remote-model-registry.md) (2026-09-24)
- [Module jobs on JetStream message schedules](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261001_nats-jobs.md) (2026-10-01)
- [Observability of a NATS deployment: SysAdmin app, live traffic, OpenTelemetry](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261002_observability.md) (2026-10-02)
- [Claim checks for published messages above the broker limit](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261003_nats-claim-check.md) (2026-10-03)
- [NATS RPC overflow for payloads above the broker limit](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261003_nats-rpc-overflow.md) (2026-10-03)
- [Streamed results for large reads over NATS](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261003_nats-streamed-results.md) (2026-10-03)
- [One serving engine per NATS account, handed over by lease](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261006_single-serving-engine.md) (2026-10-06)
- [Kernel services handle their calls side by side](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261008_concurrent-kernel-requests.md) (2026-10-08)
- [The NATS broker admits only clients with a password](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261008_nats-broker-passwords.md) (2026-10-08)
- [Stop the process when NATS is gone for good](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261008_stop-on-nats-loss.md) (2026-10-08)
- [Apps served by remote modules over NATS](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261012_remote-module-apps.md) (2026-10-12)
- [Modules sign as themselves, register as themselves, and stay off the engine's subjects](https://github.com/jupyter-naas/abi/blob/main/docs/adr/20261014_module-identities.md) (2026-10-14)
