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.