by GroundedCore
Open-source, self-hostable AI customer service platform. An Apache-2.0 alternative to Intercom/Zendesk for teams that must keep support data on-premise. Agents draft tickets; humans confirm before anything is written.
# Add to your Claude Code skills
git clone https://github.com/GroundedCore/nexusdeskSee how nexusdesk compares with popular alternatives.
nexusdesk is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by GroundedCore. Open-source, self-hostable AI customer service platform. An Apache-2.0 alternative to Intercom/Zendesk for teams that must keep support data on-premise. Agents draft tickets; humans confirm before anything is written. It has 51 GitHub stars.
nexusdesk's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/GroundedCore/nexusdesk" and add it to your Claude Code skills directory (see the Installation section above).
nexusdesk is primarily written in Python. It is open-source under GroundedCore on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh nexusdesk against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
中文用户请阅读 简体中文 README。 / Chinese-speaking users: see the 简体中文 README.
An AI agent-powered platform for intelligent customer service and service collaboration.
For teams that must keep customer service data on their own network, this is a self-hosted, lighter-weight alternative to Intercom / Zendesk (Apache-2.0; most projects in this space are AGPL-3.0).
NexusDesk connects knowledge retrieval, business tool invocation, human collaboration, and ticket handling into a single customer service flow, helping teams build agents that can answer questions, execute tasks, and follow up on outcomes. Built with Python, LangGraph, and React.
No Redis. No Kubernetes. One Postgres handles both storage and the job queue; a single Compose file brings the stack up.

The demo follows one path: ask a question → hit a knowledge citation → the agent drafts a ticket → a human confirms → the ticket is created. The quickstart uses a mock model and illustrates the flow only; it does not represent real answer quality.
sh nexusdesk quickstart # two containers, no model key required
Then open https://localhost:8080 and select the sample-support conversation:
发货需要多久? ("How long does shipping take?") to try knowledge Q&A.帮我创建工单 ("Help me create a ticket") to try the draft, confirm, and create flow.The quickstart ships its own self-signed certificate; the first visit warns about it, and importing
/data/tls/ca.crtfrom the container removes the warning (see Quickstart).
Quickstart · Production deployment · Why NexusDesk · Documentation · Contributing
The project is under continuous development and already has a working core customer service flow. Current capabilities and planned work are described separately; the scope of deployment validation is recorded in the validation record.
These are not feature bullets — they are architectural trade-offs we made on purpose.
| Trade-off | How it works | Who cares |
|---|---|---|
| A smaller operational surface | Postgres serves as datastore, job queue, and cross-process message channel. No Redis. | Teams deploying into a customer's internal network, facing a security review per component, with limited ops headcount. Every middleware you drop is one less review, one less runbook, one less failure mode. |
| Writes are gated by a human | Agents cannot perform irreversible business actions. For ticket creation, an agent can only draft; a human confirms before anything is written. A conversation can also be handed to a person at any point. | Teams that will not let an AI change business systems on its own. |
| Every change is traceable | Agent configuration is draft / publish / rollback with version diffing; model calls are quota-metered; runs emit event logs and operations are audited. | Compliance and security reviews that require changes to be reversible. |
| Category | Supported |
|---|---|
| Channel access | Embedded chat widget, channel API (HMAC signatures + message-ID deduplication), open platform API (signed webhooks with retries, idempotency keys, SSE streaming) |
| Messaging platforms | WeCom, WeChat Customer Service, Feishu, DingTalk, Slack, Telegram, Discord (native adapters) |
| Enterprise identity | OIDC, WeCom, DingTalk, Feishu |
| Model access | Any OpenAI-compatible service; Chat / Embedding / Rerank / OCR / speech, with connections and versioned profiles managed in one place |
| Knowledge sources | External parser (PDF, Office, images, depending on the parser implementation), plain TXT / Markdown; Milvus vector index and MinIO / S3 archival (opt-in) |
| Middleware | PostgreSQL only is required; Milvus and S3 are opt-in, Redis is not used |
| Deployment shape | Docker Compose: 2 containers for the quickstart / 6 long-running services plus a one-shot migration task in production; no Kubernetes or Helm yet |
| UI languages | Simplified Chinese, Traditional Chinese, English, Hindi |
| Dimension | NexusDesk | General-purpose LLM app platforms | Knowledge-base Q&A platforms | Open-source helpdesk systems |
|---|---|---|---|---|
| Focus | Customer service and collaboration | General app orchestration | Knowledge-base Q&A | Human ticket handling |
| Ticket and handoff loop | Built in | Build it yourself | Build it yourself | Built in |
| Writes require human confirmation | Built in | Build it yourself | Build it yourself | Not applicable |
| Is Redis required | No | Yes | Yes | Yes |
| Agent versioning and rollback | Built in | Partial | Partial | Not applicable |
| Model quota and metering | Built in | Partial | Partial | Not applicable |
| License | Apache-2.0 | See each project | See each project | See each project |
Information about other projects should be checked against their own documentation; this table only illustrates differences in design orientation and is not an assessment of any product.

Knowledge workspace: manage documents, chunks, indexes, and published versions. The screenshot uses test data.
| Capability | What you can do |
|---|---|
| Agent configuration and execution | Configure and publish agents; run reasoning and tool calls through an asynchronous LangGraph ReAct loop |
| Knowledge base and retrieval | Ingest documents, configure chunking, preview content, build vector indexes, and test retrieval quality |
| Unified model integration | Manage connections, catalogs, and versioned profiles for Chat, Embedding, Rerank, OCR, and speech models |
| Business tool integration | Connect business APIs and manage invocation credentials, parameters, and execution permissions |
| Human collaboration and tickets | Support conversation takeover, ticket drafting, and confirmation so issues that need follow-up enter the service flow |
| Channels and application access | Expose customer service capabilities to business systems through channel interfaces and application APIs |
| Observability and evaluation | Review execution records, tool calls, and evaluation results to troubleshoot issues and improve continuously |
Typical flow: a user asks a question → the agent retrieves knowledge or calls a business tool → the result is returned → a human handoff or a ticket confirmation happens as needed.
Requires Docker and Docker Compose v2 (on Docker Desktop, select Linux containers). Pick either of the two ways to start.
Option 1: build locally. Run this from the project root. The first run needs network access and compiles the frontend, which takes a few minutes.
# Linux / macOS
sh nexusdesk quickstart
# Windows PowerShell
.\nexusdesk.ps1 quickstart
Option 2: use the published image. Skips the frontend build and starts from the prebuilt image. Run this from the project root.
NEXUSDESK_IMAGE_REGISTRY=docker.io/groundedcore/ NEXUSDESK_VERSION=latest \
docker compose -f deploy/quickstart/compose.yaml up -d
The image is published to both GHCR and Docker Hub with identical contents, so pick whichever your network prefers: Docker Hub rate-limits anonymous pulls, GHCR does not. NEXUSDESK_VERSION must be given explicitly — its default, local, only exists after a local build.
Without cloning the repository, this one compose file is all you need. Run it from any directory:
curl -fsSLo compose.yaml \
https://raw.githubusercontent.com/GroundedCore/nexusdesk/main/deploy/quickstart/compose.yaml
NEXUSDESK_IMAGE_REGISTRY=docker.io/groundedcore/ NEXUSDESK_VERSION=latest \
docker compose -f compose.yaml up -d
Open https://localhost:8080, then open sample-support in the conversation workbench:
发货需要多久? ("How long does shipping take?") to try knowledge Q&A.帮我创建工单 ("Help me create a ticket") to try the draft, confirm, and create flow.The demo ships its own self-signed certificate, so reaching it over a LAN IP or an internal hostname is still a secure context and the browser secure-context restrictions (crypto.randomUUID, clipboard access) stay out of the way. The first visit warns about the untrusted certificate; importing `/da