# poco-ai/agentero architecture

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

- Interactive diagram: https://gitdiagram.com/poco-ai/agentero
- Repository: https://github.com/poco-ai/agentero

## Overview

Agentero is a local-first research workspace that brings paper discovery, library management, structured reading, notes, and AI-agent collaboration together. A typical workflow is to discover or import a paper, retain it in the vault, read and annotate its PDF, and build linked Markdown notes or ask an agent questions using research context. Major documented branches also include translation, citation tools, Zotero interoperability, RSS feeds, CLI automation, and remote or cloud synchronization. The graph uses README-documented capabilities where implementation excerpts were unavailable; arrows are limited to documented workflows and sampled call ownership.

Main entry points: [`src/components/viewer/pdf/engine-provider.tsx`](https://github.com/poco-ai/agentero/blob/main/src/components/viewer/pdf/engine-provider.tsx) (PDF reader), [`src-tauri/src/features/paper/import/mod.rs`](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/import/mod.rs) (Paper import), [`src-tauri/src/features/paper/catalog/service.rs`](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/catalog/service.rs) (Paper catalog), [`src/App.tsx`](https://github.com/poco-ai/agentero/blob/main/src/App.tsx) (Desktop workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Workspace"]
  node_app["Desktop workspace<br/>[App.tsx]"]
  node_tauri["Tauri host<br/>[handlers.rs]"]
  node_cli["Headless CLI<br/>[main.rs]"]
end

subgraph group_papers["Paper library"]
  node_discovery["Paper discovery<br/>[mod.rs]"]
  node_import["Paper import<br/>[mod.rs]"]
  node_catalog["Paper catalog<br/>[service.rs]"]
  node_analysis["Paper analysis<br/>[mod.rs]"]
end

subgraph group_reading["Reading and notes"]
  node_pdf["PDF reader"]
  node_pdf_features["PDF features<br/>[mod.rs]"]
  node_markdown["Markdown editor"]
  node_wiki["Wiki notes<br/>[mod.rs]"]
  node_translate["Translation<br/>[mod.rs]"]
end

subgraph group_agents["Agent interfaces"]
  node_agent_ui["Agent panel<br/>[agent-panel.tsx]"]
  node_agent_runtime["Agent runtime<br/>[mod.rs]"]
  node_mcp["MCP server<br/>[server.rs]"]
end

subgraph group_interoperability["Interoperability"]
  node_vault["Vault operations<br/>[mod.rs]"]
  node_zotero["Zotero integration<br/>[mod.rs]"]
  node_connector["Zotero Connector<br/>[server.rs]"]
  node_sync["Vault sync<br/>[engine.rs]"]
end

node_researcher(("Researcher"))
node_sync_service[("S3 or WebDAV")]

node_researcher -->|"uses"| node_app
node_researcher -->|"automates"| node_cli
node_app -->|"invokes commands"| node_tauri
node_researcher -->|"browses papers"| node_discovery
node_discovery -->|"selects papers"| node_import
node_researcher -->|"imports papers"| node_import
node_import -->|"adds to library"| node_catalog
node_catalog -->|"stores locally"| node_vault
node_researcher -->|"reads papers"| node_pdf
node_pdf -->|"uses PDF features"| node_pdf_features
node_pdf -->|"requests analysis"| node_analysis
node_researcher -->|"writes notes"| node_markdown
node_markdown -->|"resolves wikilinks"| node_wiki
node_pdf -->|"requests translation"| node_translate
node_researcher -->|"asks questions"| node_agent_ui
node_agent_ui -->|"sends interactions"| node_agent_runtime
node_mcp -->|"retrieves library context"| node_catalog
node_researcher -.->|"connects client"| node_mcp
node_researcher -->|"migrates library"| node_zotero
node_researcher -->|"saves papers"| node_connector
node_researcher -->|"starts sync"| node_sync
node_sync -->|"transfers manifests and blobs"| node_sync_service

click node_app "https://github.com/poco-ai/agentero/blob/main/src/App.tsx"
click node_tauri "https://github.com/poco-ai/agentero/blob/main/src-tauri/src/app/handlers.rs"
click node_cli "https://github.com/poco-ai/agentero/blob/main/cli/src/main.rs"
click node_discovery "https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/discovery/mod.rs"
click node_import "https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/import/mod.rs"
click node_catalog "https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/catalog/service.rs"
click node_analysis "https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/analyze/mod.rs"
click node_pdf "https://github.com/poco-ai/agentero/blob/main/src/components/viewer/pdf/engine-provider.tsx"
click node_pdf_features "https://github.com/poco-ai/agentero/blob/main/crates/agentero-core/src/features/pdf/mod.rs"
click node_markdown "https://github.com/poco-ai/agentero/blob/main/src/components/editor/markdown-editor.tsx"
click node_wiki "https://github.com/poco-ai/agentero/blob/main/crates/agentero-core/src/features/markdown/wiki/mod.rs"
click node_translate "https://github.com/poco-ai/agentero/blob/main/crates/agentero-core/src/features/translate/mod.rs"
click node_agent_ui "https://github.com/poco-ai/agentero/blob/main/src/components/agent/agent-panel.tsx"
click node_agent_runtime "https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/agent/runtime/mod.rs"
click node_mcp "https://github.com/poco-ai/agentero/blob/main/src-tauri/src/integration/mcp/server.rs"
click node_vault "https://github.com/poco-ai/agentero/blob/main/crates/agentero-core/src/features/vault/mod.rs"
click node_zotero "https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/zotero/mod.rs"
click node_connector "https://github.com/poco-ai/agentero/blob/main/src-tauri/src/integration/connector/server.rs"
click node_sync "https://github.com/poco-ai/agentero/blob/main/src-tauri/src/integration/sync/engine.rs"

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_app,node_tauri,node_cli toneBlue
class node_discovery,node_import,node_catalog,node_analysis,node_sync_service toneAmber
class node_pdf,node_pdf_features,node_markdown,node_wiki,node_translate toneMint
class node_agent_ui,node_agent_runtime,node_mcp toneRose
class node_vault,node_zotero,node_connector,node_sync,node_researcher toneIndigo
```

## Components

### Workspace

- [Desktop workspace](https://github.com/poco-ai/agentero/blob/main/src/App.tsx): `src/App.tsx`
- [Tauri host](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/app/handlers.rs): `src-tauri/src/app/handlers.rs`
- [Headless CLI](https://github.com/poco-ai/agentero/blob/main/cli/src/main.rs): `cli/src/main.rs`

### Paper library

- [Paper discovery](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/discovery/mod.rs): `src-tauri/src/features/paper/discovery/mod.rs`
- [Paper import](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/import/mod.rs): `src-tauri/src/features/paper/import/mod.rs`
- [Paper catalog](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/catalog/service.rs): `src-tauri/src/features/paper/catalog/service.rs`
- [Paper analysis](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/analyze/mod.rs): `src-tauri/src/features/paper/analyze/mod.rs`

### Reading and notes

- [PDF reader](https://github.com/poco-ai/agentero/blob/main/src/components/viewer/pdf/engine-provider.tsx): `src/components/viewer/pdf/engine-provider.tsx`
- [PDF features](https://github.com/poco-ai/agentero/blob/main/crates/agentero-core/src/features/pdf/mod.rs): `crates/agentero-core/src/features/pdf/mod.rs`
- [Markdown editor](https://github.com/poco-ai/agentero/blob/main/src/components/editor/markdown-editor.tsx): `src/components/editor/markdown-editor.tsx`
- [Wiki notes](https://github.com/poco-ai/agentero/blob/main/crates/agentero-core/src/features/markdown/wiki/mod.rs): `crates/agentero-core/src/features/markdown/wiki/mod.rs`
- [Translation](https://github.com/poco-ai/agentero/blob/main/crates/agentero-core/src/features/translate/mod.rs): `crates/agentero-core/src/features/translate/mod.rs`

### Agent interfaces

- [Agent panel](https://github.com/poco-ai/agentero/blob/main/src/components/agent/agent-panel.tsx): `src/components/agent/agent-panel.tsx`
- [Agent runtime](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/agent/runtime/mod.rs): `src-tauri/src/features/agent/runtime/mod.rs`
- [MCP server](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/integration/mcp/server.rs): `src-tauri/src/integration/mcp/server.rs`

### Interoperability

- [Vault operations](https://github.com/poco-ai/agentero/blob/main/crates/agentero-core/src/features/vault/mod.rs): `crates/agentero-core/src/features/vault/mod.rs`
- [Zotero integration](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/features/paper/zotero/mod.rs): `src-tauri/src/features/paper/zotero/mod.rs`
- [Zotero Connector](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/integration/connector/server.rs): `src-tauri/src/integration/connector/server.rs`
- [Vault sync](https://github.com/poco-ai/agentero/blob/main/src-tauri/src/integration/sync/engine.rs): `src-tauri/src/integration/sync/engine.rs`

### Other components

- **Researcher**
- **S3 or WebDAV**

## Connections

- Researcher → Desktop workspace: uses
- Researcher → Headless CLI: automates
- Desktop workspace → Tauri host: invokes commands
- Researcher → Paper discovery: browses papers
- Paper discovery → Paper import: selects papers
- Researcher → Paper import: imports papers
- Paper import → Paper catalog: adds to library
- Paper catalog → Vault operations: stores locally
- Researcher → PDF reader: reads papers
- PDF reader → PDF features: uses PDF features
- PDF reader → Paper analysis: requests analysis
- Researcher → Markdown editor: writes notes
- Markdown editor → Wiki notes: resolves wikilinks
- PDF reader → Translation: requests translation
- Researcher → Agent panel: asks questions
- Agent panel → Agent runtime: sends interactions
- MCP server → Paper catalog: retrieves library context
- Researcher → MCP server: connects client
- Researcher → Zotero integration: migrates library
- Researcher → Zotero Connector: saves papers
- Researcher → Vault sync: starts sync
- Vault sync → S3 or WebDAV: transfers manifests and blobs
