XControl is a modular multi-tenant management platform written in Go. The project integrates several optional components to provide a visual control plane for traffic statistics, configuration export and multi-node management.
This repository contains the API server, agent code and a Next.js-based UI.
- dashboard
- ui-panel
- xcontrol-cli
- xcontrol-server
All UI components provide both Chinese and English interfaces.
| Category | Technology | Version |
|---|---|---|
| Gateway | OpenResty | 1.27.1.2 |
| BackendFramework | Go | 1.24 |
| FrontFramework | Next.js/Node.js/Yarn | 14.1.0/v22.20.0/4.10.3 |
| Cache | Redis | 8.2.0 |
| Database | PostgreSQL + pgvector | 14.18 |
| Model (Local) | HuggingFace Hub + Ollama | baai/bge-m3, llama2:13b |
| Model (Online) | Chutes.AI | baai/bge-m3, moonshotai/Kimi-K2-Instruct |
XControl 通过 LangChainGo 统一接入多种大模型,并为 AskAI、CLI 与 Server 提供链式调用能力:
- LLM 接口层(Model I/O):统一调用 Hugging Face、Ollama、OpenAI 兼容模型接口。
- Chains(链式流程):将 prompt、检索结果、工具调用等组合成完整流程,支持 RAG、聊天、代码生成等场景。
- 工具与 Agent 体系:定义 Web 搜索、实现 ReAct 风格的工具调用。
- 向量检索与数据接入:适配 PGVector 向量存储。
- 文档加载与分块:提供 Document Loaders 与 Text Splitters,用于处理长文本与构建向量检索块。
- Memory 与历史追踪:支持 Conversation Buffer 等对话记忆机制,增强交互体验。
A unified CMS setup is defined in config/cms.json. The schema at config/cms.schema.json ensures templates, themes, extensions and content sources stay in sync across deployments.
- Refer to
docs/cms/README.mdfor usage instructions, extension development notes and theme customization guidelines. - Follow the migration playbook in
docs/cms/migration-guide.mdwhen switching existing sites to the CMS architecture.
Tested on Ubuntu 22.04 x64 and macOS 26 arm64.
make install
make init-db # initialize database (optional)The Next.js dashboard now resolves service endpoints through dashboard/config/runtime-service-config.yaml. The runtime
configuration selects values based on NEXT_PUBLIC_RUNTIME_ENV (falling back to NODE_ENV and the file's
defaultEnvironment). Use NEXT_PUBLIC_ACCOUNT_SERVICE_URL for ad-hoc overrides, otherwise adjust the YAML file to specify
environment-specific URLs such as http://localhost:8080 for development/test and https://accounts.svc.plus for production.
account/config/account.yaml now accepts a server.publicUrl value such as https://accounts.svc.plus:8443. The account service
uses this URL to derive a default CORS origin and to document the externally reachable host. Set server.allowedOrigins when you
need to expose additional browser clients; omit it to fall back to the public URL or the local development origins
(http://localhost:3001 and http://127.0.0.1:3001).
- XCloudFlow Multi-cloud IaC engine built with Pulumi SDK and Go. GitHub →
- KubeGuard Kubernetes cluster application and node-level backup system. GitHub →
- XConfig Lightweight task execution & configuration orchestration engine. GitHub →
- CodePRobot AI-driven GitHub Issue to Pull Request generator and code patching tool. GitHub →
- OpsAgent AIOps-powered intelligent monitoring, anomaly detection and RCA. GitHub →
- XStream Cross-border developer proxy accelerator for global accessibility. GitHub →
The docs directory contains a more detailed overview and design documents for each module.
make build
This produces a binary under bin/xcontrol. Run make agent to build the node agent.
make test
make startThis launches the server, dashboard and panel. Use make stop to stop all components.
The API server also accepts a custom configuration file:
xcontrol-server --config path/to/server.yamlBoth xcontrol-cli and xcontrol-server accept a --log-level flag to control verbosity. The level may be one of debug, info, warn, or error:
xcontrol-cli --log-level debug
xcontrol-server --log-level warnThe server's log level can also be set in the configuration file:
log:
level: infoThe flag value takes precedence over the configuration file.
See docs/changelog.md for a list of completed changes, including all work from Milestone 1.
The roadmap below is also available in docs/Roadmap.md.
This project is licensed under the terms of the MIT License.