SpacetimeDB可视化控制面板

一个用于SpacetimeDB的通用可视化控制面板,提供多租户管理、实时监控、AI代理可观察性、行级安全、备份/恢复和完整的MCP集成功能。

  • by WispAyr
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 WispAyr/spacetime-control-plane

使用说明

时空控制平面

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        │
          └─────────────────────────────────┘

设计原则

  1. 联邦层 --控制平面位于SpacetimeDB之上,作为租户管理多个数据库/模块。每个租户都是一个独立的SpacetimeDB模块,具有自己的模式、缩减器和数据。

  2. 后端如桥 --Express后端连接了React UI和SpacetimeDB CLI/API。它处理租户注册、部署编排、日志流、备份导出和策略管理——这些都是SpacetimeDB本身不支持的控制平面。

  3. 基于ORM的代码生成 --RLS策略没有在数据库级别强制执行(SpacetimeDB本身不支持这一点)。相反,控制平面生成TypeScript保护函数,您可以将其粘贴到reducer模块中。这使得执法明确且可审计。

  4. MCP首次AI集成 --每个后端功能都作为MCP工具公开,使AI代理可以完全访问控制平面。MCP服务器可以列出租户、部署模块、创建备份、添加RLS策略和监视运行状况——所有这些都不需要UI。

  5. 玻璃形态设计系统 --带有玻璃模糊效果的自定义深色主题,JetBrains Mono用于代码,Inter用于UI文本,以及精心策划的重音调色板(蓝色、绿色、琥珀色、红色、紫色、青色)。


快速开始

先决条件

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)

贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/my-feature)
  3. 提交您的更改(git commit -am 'Add my feature')
  4. 推到分支(git push origin feature/my-feature)
  5. 打开拉取请求

许可证

MIT许可证——见 许可证 了解详情。

学分