使用说明
时空控制平面
A. 通用视觉控制平面 为了 SpacetimeDB --多租户管理、实时监控、AI代理可观察性、行级安全性、备份/恢复和完整的MCP集成。
思考 Supabase Studio+Retool+AI可观察性 --但对于SpacetimeDB来说。
🐕 吃自己的狗粮 -该控制平面将其所有内部状态(租户、工作者、任务、API密钥、RLS策略、配额、内存、活动)存储在SpacetimeDB本身中。没有JSON文件,没有SQLite,只有SpacetimeDB表和reducer。
🖼️ 截图
仪表盘
系统健康概述,包括统计卡、租户状态网格、部署时间表和快速链接。每15秒自动刷新一次。
表格和数据网格
具有实时数据网格、模式检查器和自动刷新功能的实时表浏览器。单击任何表以浏览行和列类型。
监控仪表板
实时集群健康监控——租户计数、部署统计、错误跟踪和具有自动刷新功能的每个租户健康网格。
行级安全
定义每个表的访问策略,并为SpacetimeDB reducer模块自动生成TypeScript保护代码。
租户管理
自动发现SpacetimeDB模块、一键部署、日志流和备份/恢复。
安全与认证
JWT会话管理、API密钥生成(带范围权限)、密钥吊销和集成指南。
任务板
具有原子声明的看板式任务管理——没有重叠。人类和人工智能工作者是平等的参与者。5列:积压→ 声称→ 进行中→ 审查→ Done.
员工与目标
将人类和人工智能工作者登记为平等参与者。创建目标,在任务完成时自动跟踪进度。实时活动饲料显示所有突变。
More screenshots
减速器
交互式缩减表单——查看签名、展开以填充类型化参数、调用并查看成功/错误反馈。
SQL控制台
编写并执行SQL查询,结果以格式化表的形式呈现。
特性
🏠 仪表板主页
- 系统健康 --SpacetimeDB在线/离线指示器,带后端正常运行时间
- 和数据卡 --租户、部署、安全状态一览
- 租户网格 --每个租户的在线/离线状态,包括桌子/减速器数量
- 部署时间表 --带有成功/失败指示器的最近部署历史记录
- 快速链接 --监控、RLS策略、安全、Webhooks
📊 模式浏览器和数据网格
- 自动发现 --连接到任何SpacetimeDB模块,并在运行时自检模式
- 实时数据网格 --具有3秒自动刷新功能的实时表格数据
- 架构检查器 -列名、类型、约束(PK、auto_inc、唯一)
⚡ 还原调用程序和SQL控制台
- 交互式减速器表单 --单击任何reducer展开类型化参数表单,调用它,并查看成功/错误反馈
- SQL控制台 --编写和执行SQL查询,并将结果呈现为表
🤖 AI可观察性
- 活动动态 --具有批准/拒绝工作流的AI代理操作时间表
- 规则面板 --控制人工智能行为的人类可编辑规则
- AI聊天 --人类和人工智能代理之间的实时对话
👥 租户管理
- 自动发现 --扫描SpacetimeDB模块的工作区
- 一键部署 --注册模块并从UI发布
- 日志流 --查看模块日志(批取+SSE流)
- 备份与恢复 --每个租户的完整数据导出,从JSON下载/还原
📈 监控
- 汇总统计信息 --租户、已部署、错误、总部署——实时卡
- 租户健康网格 --每个租户的在线/离线状态指标
- 部署时间表 --最近部署了✓/✗ 状态
- 自动刷新 --每10秒轮询一次(可切换)
🛡️ 行级安全
- 策略管理器 --定义每个表、每个操作的访问策略
- 强制切换 --启用/禁用策略而不删除它们
- 代码生成 --自动生成TypeScript保护函数+
enforceRLS中间件 - SpacetimeDB兼容 --生成的代码使用
ReducerContext.sender身份检查
🔐 安全与认证
- JWT会议 --使用管理员密码登录,24小时令牌
- API密钥 --生成
stcp_*具有范围权限(读/写/部署)的密钥 - 密钥管理 --屏蔽显示,上次使用跟踪,一键撤销
🔔 网络钩子
- 事件订阅 --注册部署/失败/租户事件的URL
- 测试交付 --一键式webhook测试
- 切换和管理 --启用/禁用而不删除
🔌 MCP服务器
- 15个MCP工具 --AI代理的全时空数据库+控制平面访问
- stdio运输 --当地融入度下降
- 零配置 --只需将其指向您的SpacetimeDB URL
架构与方法
┌──────────────────────────────────────────────────────────────────┐
│ Control Plane UI (12 pages) │
│ React 19 + TypeScript + Vite + Glassmorphism CSS │
│ │
│ ┌──────┬──────┬─────┬──────┬──────┬───────┬───────┬──────────┐ │
│ │ Home │Tables│ SQL │Agent │Event │Tenant │Monitor│ Policies │ │
│ └──┬───┴──┬───┴──┬──┴──┬───┴──┬───┴───┬───┴───┬───┴────┬─────┘ │
│ └──────┴──────┴─────┴──────┴───────┴───────┴────────┘ │
│ │ │
│ ┌────────────────────────▼──────────────────────────────────┐ │
│ │ Backend Service (:3002) │ │
│ │ Node.js + Express · 40+ REST endpoints │ │
│ │ Tenants · Deploy · Logs · Monitoring · Auth · Backup · │ │
│ │ Schema · RLS Policies · Files · Webhooks · Dashboard │ │
│ └────────────────────────┬──────────────────────────────────┘ │
└───────────────────────────┼──────────────────────────────────────┘
│
┌─────────────────▼───────────────┐
│ SpacetimeDB :3001 │
│ ┌───────────────────────────┐ │
│ │ App Module A │ │
│ │ App Module B │ │
│ │ Control Plane AI Module │ │
│ └───────────────────────────┘ │
└─────────────────▲───────────────┘
│
┌─────────────────┴───────────────┐
│ MCP Server (stdio) │
│ 15 tools for AI agents │
└─────────────────────────────────┘
设计原则
-
联邦层 --控制平面位于SpacetimeDB之上,作为租户管理多个数据库/模块。每个租户都是一个独立的SpacetimeDB模块,具有自己的模式、缩减器和数据。
-
后端如桥 --Express后端连接了React UI和SpacetimeDB CLI/API。它处理租户注册、部署编排、日志流、备份导出和策略管理——这些都是SpacetimeDB本身不支持的控制平面。
-
基于ORM的代码生成 --RLS策略没有在数据库级别强制执行(SpacetimeDB本身不支持这一点)。相反,控制平面生成TypeScript保护函数,您可以将其粘贴到reducer模块中。这使得执法明确且可审计。
-
MCP首次AI集成 --每个后端功能都作为MCP工具公开,使AI代理可以完全访问控制平面。MCP服务器可以列出租户、部署模块、创建备份、添加RLS策略和监视运行状况——所有这些都不需要UI。
-
玻璃形态设计系统 --带有玻璃模糊效果的自定义深色主题,JetBrains Mono用于代码,Inter用于UI文本,以及精心策划的重音调色板(蓝色、绿色、琥珀色、红色、紫色、青色)。
快速开始
先决条件
- Node.js 18+
- SpacetimeDB命令行界面 v2.0.3+
1.启动SpacetimeDB
spacetime start
2.发布测试模块
cd modules/test-module
cd spacetimedb && npm install && cd ..
spacetime publish test-module --server http://localhost:3001
3.启动控制平面
# Frontend (12 pages)
cd control-plane
npm install
npm run dev
# Backend (required for tenant management, monitoring, auth, backup, webhooks)
cd control-plane/backend
npm install
npm start
打开 http://localhost:5174 → 连接到您的SpacetimeDB实例。
4.(可选)启动MCP服务器
cd control-plane/mcp-server
npm install
SPACETIME_URL=http://localhost:3001 node index.js
页面
| 页面 | 图标 | 描述 |
|---|---|---|
| 仪表盘 | 🏠 | 带有统计卡和快速链接的系统概述 |
| 表格 | ⊞ | 带模式检查器的实时数据网格 |
| 减速器 | 交互式减速器形式 | |
| 结构化查询语言 | > | 带有markdown结果的SQL控制台 |
| AI 代理 | ◉ | 活动提要+规则面板 |
| 事件 | ⚡ | 带有消息气泡的AI聊天 |
| 租户 | ◎ | 模块管理、部署、日志、备份 |
| 监视器 | 📊 | 实时健康网格+部署时间表 |
| 政策 | 🛡️ | 具有代码生成功能的RLS策略管理器 |
| 安全 | 🔐 | JWT会话+API密钥管理 |
| 设置 | ⚙ | 拓扑图+数据库概述 |
后端API
| 类别 | 端点 | 描述 |
|---|---|---|
| 仪表盘 | GET概述 | 聚合系统统计信息 |
| 租户 | CRUD、注册、发现 | 管理租户模块 |
| 部署 | POST发布 | 通过CLI一键部署 |
| 日志 | GET批处理、SSE流 | 模块日志查看 |
| 监控 | 概述,每个租户的统计数据 | 实时健康数据 |
| 模式 | 快照、差异 | 迁移跟踪 |
| 认证 | 登录,验证,密钥CRUD | JWT+neneneba API密钥验证 |
| 备份 | 创建、列出、下载、还原 | 完整数据导出/导入 |
| RLS | 策略CRUD、codegen | 行级安全 |
| 文件 | 上传、列表 | 媒体参考存储 |
| 网络钩子 | CRUD、切换、测试 | 事件通知 |
| 系统 | 健康检查 | 后端状态 |
MCP工具
| 工具 | 说明 |
|---|---|
spacetime_ping |
检查SpacetimeDB是否可访问 |
spacetime_list_databases |
列出所有已知的实时统计数据库 |
spacetime_add_database |
注册数据库名称 |
spacetime_get_schema |
JSON格式的完整模式(表+缩减器) |
spacetime_list_tables |
带列详细信息的表列表 |
spacetime_describe_table |
详细表格信息+示例行 |
spacetime_list_reducers |
减速器签名 |
spacetime_query |
运行SQL,获取markdown表结果 |
spacetime_call_reducer |
使用JSON参数调用reducer |
cp_list_tenants |
列出已注册租户的状态 |
cp_deploy_tenant |
将模块部署到SpacetimeDB |
cp_monitoring_overview |
所有租户的汇总统计数据 |
cp_backup_tenant |
租户的完整数据备份 |
cp_create_api_key |
生成作用域API密钥 |
cp_add_rls_policy |
创建行级安全策略 |
MCP配置
{
"mcpServers": {
"spacetime": {
"command": "node",
"args": ["<path-to>/control-plane/mcp-server/index.js"],
"env": {
"SPACETIME_URL": "http://localhost:3001",
"SPACETIME_DATABASES": "your-database-name"
}
}
}
}
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
SPACETIME_URL |
http://localhost:3001 |
SpacetimeDB实例URL |
PORT |
3002 |
后端服务端口 |
ADMIN_PASSWORD |
spacetime |
管理员登录密码 |
JWT_SECRET |
自动生成 | JWT签名密钥 |
BACKEND_URL |
http://localhost:3002 |
MCP→ 后端URL |
项目结构
spacetime-control-plane/
├── control-plane/ # React + Vite frontend
│ ├── src/
│ │ ├── components/ # Sidebar, TopBar, ConnectDialog
│ │ ├── hooks/ # useConnection (multi-instance context)
│ │ ├── lib/ # SpacetimeDB HTTP client
│ │ ├── pages/ # 12 page components
│ │ └── test/ # Vitest setup
│ ├── backend/ # Express backend service
│ │ └── server.js # 40+ REST endpoints
│ └── mcp-server/ # MCP server (Node.js, stdio)
│ └── index.js # 15 tools + resources
│
├── modules/ # SpacetimeDB server modules
│ ├── test-module/ # Simple person table + reducers
│ ├── inventory-app/ # Item + task tables with CRUD
│ └── control-plane-module/ # AI observability module
│
├── docs/screenshots/ # UI screenshots for documentation
└── README.md
测试
cd control-plane
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage report
技术栈
| 层 | 技术 |
|---|---|
| 前端 | React 19+TypeScript+Vite |
| 造型 | 香草CSS(glassmorphism设计系统) |
| 后端 | Node.js+Express |
| Auth | JWT(jsonwebtoken)+API密钥 |
| 测试 | Vitest+React测试库 |
| 数据库 | SpacetimeDB v2.0.3 |
| 模块 | SpacetimeDB TypeScript SDK |
| MCP | @modelcontextprotocol/sdk(stdio) |
贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/my-feature) - 提交您的更改(
git commit -am 'Add my feature') - 推到分支(
git push origin feature/my-feature) - 打开拉取请求
许可证
MIT许可证——见 许可证 了解详情。
学分
- SpacetimeDB --数据库引擎
- 模型上下文协议 --AI集成标准
- 内置于❤️ 通过 伊万·理查森
