Skip to content

FAQ ​

Basics ​

Is Xiajiao IM free? ​

Yes. MIT license—use, modify, and ship commercially.

How is Xiajiao different from ChatGPT / Claude? ​

ChatGPT / Claude are single-agent chats. Xiajiao is a multi-agent workspace where agents can collaborate.

AspectChatGPT / ClaudeXiajiao
AgentsOneUnlimited
CollaborationNoYes (@mention + chains)
Long-term memoryLimitedThree-type durable memory
DataCloudFully local
ModelsFixed catalogAny compatible API
CostSubscriptionYour API spend

How is Xiajiao different from Dify / Coze / FastGPT? ​

Positioning

  • Dify / FastGPT: build end-user AI apps
  • Coze: build and publish bots
  • Xiajiao: run an agent team as coworkers, not as a packaged SaaS product

Architecture

AspectXiajiaoDifyFastGPT
External servicesNone (embedded SQLite)Postgres + Redis + sandboxMongo + Postgres + OneAPI
npm deps6N/A (Python)N/A
Deploynpm startdocker compose updocker compose up

Do I need a GPU? ​

No for Xiajiao—it calls remote LLMs. Ollama locally can use a GPU (or large RAM); that is separate from Xiajiao.

Which models are supported? ​

Any OpenAI-compatible endpoint, including OpenAI, Anthropic (via adapters), Qwen, DeepSeek, Moonshot/Kimi, Zhipu GLM, Ollama, OpenRouter, etc. See Model configuration.

Installation ​

Why Node.js 22+? ​

node:sqlite ships in Node 22, so no external database daemon is required—core to the “zero external services” design.

Slow npm install ​

Only six packages; slowness is usually network. Try a mirror:

bash
npm config set registry https://registry.npmmirror.com
npm install

No Git? ​

Download the ZIP from GitHub → extract → npm install && npm start.

Windows build errors ​

powershell
npm install --global windows-build-tools
npm install

Usage ​

Agent not answering ​

  1. Settings → Models — keys and base URL
  2. Agent has an assigned model
  3. Browser console (F12)
  4. Server logs

Create a custom agent ​

Contacts → New agent → name, emoji, model, tools, SOUL.md.

How to write SOUL.md ​

Markdown “job description”:

markdown
# Role name

One-line charter.

## Core skills
- Skill one
- Skill two

## Principles
- Rule one

## Output format
- Formatting rules

Be specific; vague instructions produce vague behavior.

Remember my preferences? ​

  1. Enable autoInjectMemory plus memory_write / memory_search
  2. Or state preferences explicitly so the agent stores them

See Agent memory.

Upload documents ​

Web UI → agent workspace. PDF, TXT, Markdown supported. Pipeline: parse → chunk → embed → index. Retrieval via rag_query.

Multi-agent automation ​

  1. Chains — order agents in a group
  2. @mention — route each message
  3. call_agent — agent invokes another agent

See Collaboration flow.

Message history ​

Persisted in SQLite (data/xiajiao.db) with FTS5 search.

Security & privacy ​

Where is data? ​

On your disk: messages in data/xiajiao.db, memory per workspace, uploads in public/uploads/. No Xiajiao-hosted relay.

API key safety? ​

Stored locally; sent only to the provider you configured.

Multi-user safety? ​

Password auth via OWNER_KEY—fine for trusted small teams. For the public internet add strong secrets, HTTPS, and IP restrictions if possible.

Does open-sourcing expose my data? ​

No. data/ and secrets belong in .gitignore.

Technical choices ​

Why SQLite instead of PostgreSQL? ​

Zero separate DB service, WAL concurrency, FTS5, easy backup (copy a file), plenty for small/medium teams.

Why Vanilla JS instead of React/Vue? ​

No build step, tiny footprint, IM UI does not need a heavy component framework.

Why not Express/Koa/Fastify? ​

node:http covers ~15 endpoints—fewer dependencies and less attack surface.

MCP support? ​

Xiajiao acts as an MCP client. Connect external MCP servers (stdio or HTTP transport) in Settings → MCP; their tools auto-register as mcp:{serverId}:{toolName} and become available to Agents.

Can I fork and extend? ​

Yes—MIT, clear layout under server/routes, server/services, public/. See GitHub CONTRIBUTING.md and Developer guide.

Operations ​

Different models per agent ​

Set per agent in the UI (e.g. code → Sonnet, translation → GPT-4o, chores → Qwen Turbo). See Model configuration.

Backup / migrate ​

bash
tar czf xiajiao-backup.tar.gz data/ public/uploads/
scp xiajiao-backup.tar.gz new-server:/opt/
ssh new-server "cd /opt && tar xzf xiajiao-backup.tar.gz"

SQLite concurrency ​

WAL handles small teams (roughly 1–50 users) comfortably. For larger teams prefer SSD, periodic VACUUM, and static caching via Nginx.

Upgrade ​

bash
cd xiajiao
git pull
npm install
pm2 restart xiajiao

data/ is preserved.

Forgot password ​

bash
OWNER_KEY="new-password" npm start

Password lives in the environment, not the DB.

Inspect memories ​

bash
sqlite3 data/workspace-{agentId}/memory.db \
  "SELECT type, content, created_at FROM memories ORDER BY created_at DESC LIMIT 20;"

Fully air-gapped? ​

Yes—Xiajiao + local Ollama. Install deps on a networked machine once, copy the tree inward, run Ollama locally. See Security.

Advanced development ​

Add an HTTP route ​

Edit the relevant module under server/routes/ and register it from server/router.js. Restart Node.

Add a custom tool ​

Three methods:

  1. HTTP custom tools (zero-code): Settings → HTTP Tools — configure any REST API as an Agent tool with interpolation, no code needed
  2. JS auto-register: drop a .js file into server/services/tools/ or data/custom-tools/ — auto-registered on startup
  3. MCP bridged: connect external MCP servers in Settings → MCP

See Tool calling — Custom tools and Developer guide.

Database schema? ​

API reference — database tables.

Automate via HTTP ​

bash
curl -c cookies.txt -X POST http://localhost:18800/api/login \
  -H "Content-Type: application/json" -d '{"password":"admin"}'

curl -b cookies.txt -X POST http://localhost:18800/api/messages \
  -H "Content-Type: application/json" \
  -d '{"channelId":"ch_xxx","content":"@Code assistant daily summary","type":"text"}'

Cron-style automation ​

Use manage_schedule from an agent, or describe schedules in SOUL.md.