Chinese-speaking users: see the 简体中文 README.
An open-source, self-hostable, and extensible general-purpose agent platform.
NexusDesk is built to reduce the cost and difficulty of moving AI from a capability demo into a stable, measurable business service. Its first complete open-source reference application is AI customer service, which validates the platform against real workflows rather than a technical demo.
NexusDesk is organized into four layers:
| Layer | Responsibility |
|---|---|
| Core Platform | Agent execution, task lifecycle, state management, security governance, and observability |
| Extension Contracts | Stable interfaces for models, tools, knowledge, memory, channels, and business capabilities |
| Business Capabilities | Reusable capabilities that have been validated, configured, and tested in real scenarios |
| Applications | Product experiences, business workflows, and data models for specific users and use cases |
The shared execution loop is:
Request → retrieve context → decide → call tools → human confirmation → execute → record → evaluate
Agents retrieve knowledge, call business tools, and decide what to do next based on execution results. The Harness handles permissions, execution boundaries, memory, human handoff, and audit. It is not another agent; it is the engineering control layer around the agent execution loop.
The default deployment requires only PostgreSQL. PostgreSQL handles data storage, job queues, and cross-process messaging. Redis, dedicated message queues, Kubernetes, and other infrastructure can be added as throughput, latency, isolation, or availability requirements grow. The initial deployment still starts with one Compose file.
Quickstart · Production deployment · Core capabilities · Architecture
Requires Docker and Docker Compose v2. On Docker Desktop, use Linux containers.
Option 1: build locally. The first run requires network access and compiles the frontend.
# Linux / macOS
sh nexusdesk quickstart# Windows PowerShell
.\nexusdesk.ps1 quickstartOption 2: use the published image.
NEXUSDESK_IMAGE_REGISTRY=docker.io/groundedcore/ NEXUSDESK_VERSION=latest \
docker compose -f deploy/quickstart/compose.yaml up -dOpen https://localhost:8080 and choose the sample-support conversation:
- Enter
发货需要多久?to try knowledge Q&A. - Enter
帮我创建工单to try drafting, human confirmation, and ticket creation.
The quickstart uses a self-signed certificate, so the browser will warn on first access. See the deployment guide for certificate setup and LAN access.
Nine industry case sets are also included: 9 knowledge bases, 18 agent drafts, and 36 documents. Every resource name carries the [案例] prefix and can be filtered on the Agent page.
Security note: the quickstart uses a mock model and does not represent real answer quality. The default credentials
admin / nexusdeskare for local evaluation only and are not an authentication boundary. Keep the default127.0.0.1binding; if you expose the service, restrict access with a security group or firewall.
Copy the configuration template, fill in role tokens and the external PostgreSQL connection, and enable Milvus / S3 as needed:
# Linux / macOS
cp deploy/production/.env.example deploy/production/.env
# Edit deploy/production/.env
sh nexusdesk deploy# Windows PowerShell
Copy-Item deploy/production/.env.example deploy/production/.env
# Edit deploy/production/.env
.\nexusdesk.ps1 deployOpen http://localhost:8080 and enter the configured role token under Access and Policy. The platform can start without a default model; configure and publish a Chat profile, bind it to an agent, and then start a conversation.
The production topology includes six long-running services — API, Runtime Worker, Channel Worker, Knowledge Worker, Memory Worker, and Web — plus a one-shot migration task. See the deployment guide for HTTPS, backup, upgrade, and external access configuration.
| Capability | What it provides |
|---|---|
| Agent configuration and execution | Configure, publish, and roll back agents; run reasoning and tool calls through an asynchronous LangGraph ReAct loop |
| Knowledge and retrieval | Manage documents, chunks, indexes, and published versions, with keyword retrieval and optional Milvus |
| Agent memory | Configure read/write, extraction and review modes, and injection limits, and inspect customer-level memory |
| Model gateway | Manage connections and versioned profiles for Chat, Embedding, Rerank, OCR, and speech models |
| Tools and business integration | Connect business APIs and manage credentials, parameters, permissions, and execution results |
| Human collaboration and tickets | Support conversation takeover, ticket drafting, and human confirmation for follow-up work |
| Channels and open platform | Connect customer service capabilities through channel APIs, application APIs, and SSE |
| Observability and evaluation | Review execution records, model and tool calls, evaluation results, and operation audit |
Typical flow: customer asks a question → the agent retrieves knowledge or calls a tool → the result is returned → a human handoff or confirmed ticket creation follows as needed.
When an agent can read tool results and adjust its next action, not every business path needs to be fixed as a complete workflow up front. NexusDesk focuses on:
- Dynamic decisions where they fit: within configured limits, the agent chooses knowledge retrieval or tool calls, and ReAct feeds execution results into the next decision.
- Explicit boundaries for high-impact actions: permissions, parameter validation, execution limits, and human confirmation are not left to the model.
- Infrastructure that scales on demand: PostgreSQL is the default requirement; Milvus and S3 are optional, and dedicated middleware or cluster capabilities can be added as scale or availability requirements grow.
NexusDesk is not a knowledge Q&A chatbot, a traditional workflow engine that fixes every path in advance, or a generic agent builder that leaves execution governance to application developers. Paths that must remain deterministic stay under deterministic control.
| Category | Supported |
|---|---|
| Messaging platforms | WeCom, WeChat Customer Service, Feishu, DingTalk, Slack, Telegram, Discord |
| Enterprise identity | OIDC, WeCom, DingTalk, Feishu |
| Model access | Any OpenAI-compatible service; Chat / Embedding / Rerank / OCR / speech |
| Knowledge sources | External parser, TXT / Markdown; optional Milvus vector index and MinIO / S3 archive |
| Open access | Embedded chat widget, channel API, signed webhooks, idempotency keys, SSE streaming |
| UI languages | Simplified Chinese, Traditional Chinese, English, Hindi |
- Retrieval: the runtime defaults to keyword search; Milvus vector retrieval is not yet validated end to end.
- Tools: built-in tools and HTTP integrations are available; the MCP adapter is still planned.
- Quickstart: uses a mock model, connects to no real business system, and does not represent real model quality.
- Deployment: Docker Compose only; no Kubernetes or Helm charts yet.
- Overall status: the project is under continuous development and is not production ready out of the box. See the module delivery notes.
flowchart LR
Console[React console] --> API[FastAPI service]
Channels[Business systems and channels] --> API
API --> PG[(PostgreSQL)]
API --> Workers[Runtime / Channel / Knowledge / Memory Workers]
Workers --> Gateway[Model gateway]
Workers --> Tools[Tool gateway]
Workers --> Retrieval[Knowledge retrieval]
Gateway --> Models[Model APIs]
Tools --> Business[Business APIs]
Retrieval --> PG
Retrieval --> Milvus[(Milvus, optional)]
NexusDesk is a modular monolith: the API and workers share one backend codebase and are deployed as separate processes. PostgreSQL stores business data and the task queue; Milvus, S3, and an external parsing service are enabled per feature.
| Layer | Technology |
|---|---|
| Frontend | TypeScript, React, Ant Design, Vite |
| Backend and execution | Python, FastAPI, LangGraph |
| Data and migrations | PostgreSQL, SQLAlchemy, Alembic |
| Knowledge storage | Milvus, MinIO / S3 (optional) |
| Deployment | Docker Compose, Nginx |
Using external model services requires no GPU on the application server. See the middleware guide for details.
The documents listed below are currently written in Simplified Chinese.
| I want to... | Document |
|---|---|
| Use the customer service workbench | Platform guide |
| Deploy, upgrade, or migrate data | Docker deployment guide |
| Understand middleware and configuration | Middleware guide |
| Start a local development environment | Local development |
| Understand the architecture and extension modules | Module architecture |
| Understand agent execution | Runtime documentation |
| Configure the knowledge base | Knowledge workspace |
| Integrate model services | Model gateway protocol |
| Integrate business applications | API reference · Open platform |
| See what changed in a release | Changelog |
NexusDesk keeps its platform core and extension contracts open, validates platform capabilities through real applications, and turns that experience into reusable, maintainable product capabilities.
The public roadmap has two complementary tracks:
| Roadmap | Focus |
|---|---|
| Platform Roadmap | Establish a stable, trustworthy, and extensible agent core: execution and task lifecycle, clear module boundaries and extension contracts, permissions, human confirmation, audit, observability, evaluation, and failure recovery. |
| Open-source Application Roadmap | Make AI customer service a complete, real-world open-source reference application: knowledge Q&A with citations, tickets and human takeover, business tools, channels, deployment, monitoring, evaluation, and user documentation. |
See the module architecture for module-level plans.
Contributions are welcome through issue reports, documentation improvements, test cases, and code.
- Use the issue templates and include reproduction steps, deployment mode, and sanitized logs.
- Read the contributing guide before contributing code.
- Use Discussions for design-level topics.
Do not include API keys, access tokens, or customer privacy data in issue reports, screenshots, or code.
This project is licensed under the Apache License 2.0.
