Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗One contract for every dotkn app, so Pulse (the local monitoring dashboard) reads its health, deploys, product events and business metrics with no per-app code, and dotkn-lab's factory (watch, release probe, manifest) probes it unchanged. The contract is CONTRACT.md.
| What | Route or object | Read by |
|---|---|---|
| Health | GET /health → {"ok":true} (503 {"ok":false,"checks":…}) | Pulse http target, dotkn-lab watch |
| Build | GET /__build → {"commit":"<40 hex>","built_at":"<ISO>"} | Pulse deploy markers, dotkn-lab release |
| Events | Analytics Engine pulse_events, index1 = app id | Pulse Events card |
| Metrics | Supabase pulse.metrics() | Pulse "App metrics" |
npm i github:rlopezlacuague/dotkn-pulse-kit#v0.1.2
Install from the git tag. The package is not on npm, and an npm package of this name is not ours.
The app id you pass below is the Pulse app id (by default the wrangler name). Add the dataset
binding to wrangler.jsonc / wrangler.toml wherever you track events:
"analytics_engine_datasets": [{ "binding": "PULSE", "dataset": "pulse_events" }]
Worker (fetch handler or Hono). Stamp the build before deploy, mount first:
// package.json
"predeploy": "dotkn-pulse-kit stamp --out src/pulse-build.ts" // git-ignore that file
import { pulse, track } from 'dotkn-pulse-kit/worker';
import { PULSE_BUILD } from './pulse-build';
const kit = pulse({ app: 'my-app', build: PULSE_BUILD });
export default {
async fetch(req: Request, env: Env) {
track(env.PULSE, 'my-app', { event: 'request' }, req);
return (await kit(req, env)) ?? handle(req, env);
},
};
React Router / Vite. vite.config.ts: plugins: [pulseBuild(), …] from dotkn-pulse-kit/vite;
app/routes.ts: ...pulseRoutes(route) from dotkn-pulse-kit/react-router;
app/routes/pulse.health.ts: export const loader = healthLoader();
app/routes/pulse.build.ts: export const loader = buildLoader({ commit: __PULSE_COMMIT__, builtAt: __PULSE_BUILT_AT__ });
Next.js (OpenNext). next.config: env: pulseEnv() and rewrites: async () => pulseRewrites()
from dotkn-pulse-kit/next-config; app/api/pulse/health/route.ts: export const GET = healthGET();
app/api/pulse/build/route.ts: export const GET = buildGET(); (from dotkn-pulse-kit/next).
Cloudflare Pages Functions. functions/health.ts: export const onRequestGet = pagesHealth();
functions/__build.ts: export const onRequestGet = pagesBuild(PULSE_BUILD); and
trackPages(context, 'my-app', { event: 'signup' }) in any function (from dotkn-pulse-kit/pages).
Astro. integrations: [pulseAstro()] from dotkn-pulse-kit/astro. Static output writes
/health and /__build files with their _headers; server output injects the two endpoints.
Static Vite site on Pages. plugins: [pulseBuild({ emit: true })] writes the two files and headers.
The build fails when no commit is found (PULSE_BUILD_COMMIT, GITHUB_SHA,
WORKERS_CI_COMMIT_SHA, then git rev-parse HEAD): a deploy never reports a guess.
npx dotkn-pulse-kit supabase --app my-app > supabase/migrations/<ts>_pulse_metrics.sql
npx dotkn-pulse-kit supabase --app my-app --from-yaml ../pulse/config/apps.yaml # seed from Pulse
One select per metric (name, label, unit, value, dims). The function lives in schema pulse
(not exposed by PostgREST), is revoked from public, anon, authenticated and granted only to
supabase_read_only_user, the role Pulse reads with. It is security invoker, so it runs with
that role's rights.
If a metric calls one of your functions that PUBLIC cannot execute, add
--grant-execute public.my_fn() (comma-separated for several). Grant only a function that
schema-qualifies every table it reads, or whose search_path lists pg_temp last.
npx dotkn-pulse-kit check https://my-app.example
Probes /health and /__build and names every deviation (status, headers, body shape).
canary/ is a minimal Worker (pulse-kit-canary) deployed from this repo with
npm run canary:deploy and left running as the kit's integration target.
Nothing secret lives here by construction: route handlers, a build stamp, a column layout, a SQL
template. A test greps everything that ships for keys, tokens, 32-hex ids and project refs, and the
release workflow runs it on dist/ before publishing.