Tugra

com.tugra-ai由 tugra-ai.com 发布v0.1.4更新于 Oct 24, 2026

Provenance-aware memory format for AI agents: every claim carries its source, age and boundary.

发布方自己的服务:Agora by openforallofus

已验证STDIO仅桌面文件与存储知识与记忆

概览

AI 生成的概览

面向 AI 代理的本地文件式记忆库,每条事实都带有来源、核验日期、有效期与边界。

可以做什么
  • 检索记忆库中的事实,按词元得分、新鲜度和置信度排序,默认隐藏已退役或过期的事实
  • 按 uid 读取单条事实,正文在交给模型前会先转义
  • 提交事实草稿,写入前会拒绝含密钥模式的内容,边界类条目一律隔离
  • 向本地事件目录追加一行遥测记录,不发起任何网络请求
适用场景
适合希望助手跨会话保留可审计笔记、且每条结论都能追溯到来源和日期的场景,也适合把不允许臆造的主题明确划为禁区。适用于偏好纯 markdown 文件、不需要托管记忆服务的单用户本地环境。
运行要求
需要 Node.js 20 或更高版本,通过 npx 以本地 stdio 进程运行。需要一个自己拥有的记忆库目录,运行 tugra init 会创建目录、写入示例事实并打印配置块。可选环境变量 TUGRA_VAULT 和 TUGRA_EVENTS 分别指定记忆库与遥测目录;TUGRA_AUTH 用于共享记忆库时给每个代理配置档案。无需账号或 API 密钥。
安装前请注意
记忆库就是你指定的那些文件:没有云同步,不会自动合并,也不做冲突检测,本版本没有删除功能,因此相互矛盾的事实可能并存,需人工核对。提交草稿会向记忆库写入文件。若设置了 TUGRA_AUTH,没有档案的代理会得到未授权结果。该包还附带宿主端模块,可跳过或放宽授权检查,只应由你自己控制的宿主程序导入。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Tugra,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

tugra

Part of VERAX, by VERAX Teknoloji. Start with the VERAX body: verax-ai/verax. Sister projects: Conarium · Cedulon.

Listed on: npm · Glama · MCP Registry · MCP Market · LobeHub

[agora]

bash
npx tugra init

That creates a vault, writes a sample fact, and prints a config block. Paste the block into your MCP client. On a TTY, npx tugra prints help and exits. Piped (Claude Desktop, Cursor, Claude Code) it is the MCP server.

Provenance-aware memory for AI agents. Every claim carries its source, its age, and its boundary. There is no cloud.

What it is

A fact that cannot name where it came from is not a fact. Tugra stores each claim as a file whose frontmatter holds source, last verification date, shelf life, and — when the topic is off-limits — a boundary that forbids invention. Search ranks by token score, then freshness, then confidence. Retired and rotten facts stay out of the default set.

Tools

ToolWhat it does
fact_searchSearch the vault. Retired/rotten omitted unless archive: true.
fact_readRead one fact by uid. Body is escaped before the model sees it.
fact_proposeWrite a draft. Secret patterns are rejected before any write. type: "boundary" is always quarantined.
event_reportAppend a local telemetry line. No network.

Stored field names stay in the vault's native shape (kaynak, guven, raf_omru, sinir). The tool names and parameter names above are the public contract.

Install — env paths (optional)

tugra init is enough to start. Override the two paths only if you already have a vault elsewhere. Without them, the server looks next to the installed package — that is wrong for a bare npx with no init.

  • TUGRA_VAULT — vault (markdown facts)
  • TUGRA_EVENTS — telemetry directory

Authorization: if no authorization store is configured, single-user mode is on — search and propose work without a profile. If an authorization store is configured (a yetki/ directory, or TUGRA_AUTH), each agent needs a JSON profile or search returns unauthorized.

Claude Desktop

claude_desktop_config.json:

json
{  "mcpServers": {    "tugra": {      "command": "npx",      "args": ["-y", "tugra"],      "env": {        "TUGRA_VAULT": "/absolute/path/to/vault",        "TUGRA_EVENTS": "/absolute/path/to/events"      }    }  }}

Claude Code

.mcp.json at the project root, or claude mcp add:

json
{  "mcpServers": {    "tugra": {      "command": "npx",      "args": ["-y", "tugra"],      "env": {        "TUGRA_VAULT": "/absolute/path/to/vault",        "TUGRA_EVENTS": "/absolute/path/to/events"      }    }  }}

Cursor

.cursor/mcp.json or Cursor Settings → MCP:

json
{  "mcpServers": {    "tugra": {      "command": "npx",      "args": ["-y", "tugra"],      "env": {        "TUGRA_VAULT": "/absolute/path/to/vault",        "TUGRA_EVENTS": "/absolute/path/to/events"      }    }  }}

Windsurf

mcp_config.json:

json
{  "mcpServers": {    "tugra": {      "command": "npx",      "args": ["-y", "tugra"],      "env": {        "TUGRA_VAULT": "/absolute/path/to/vault",        "TUGRA_EVENTS": "/absolute/path/to/events"      }    }  }}

Codex

~/.codex/config.toml:

toml
[mcp_servers.tugra]command = "npx"args = ["-y", "tugra"]
[mcp_servers.tugra.env]TUGRA_VAULT = "/absolute/path/to/vault"TUGRA_EVENTS = "/absolute/path/to/events"

Windows: use a full path (C:\\Users\\…\\vault). Node 20 or newer.

More client notes: docs/install.md.

Shared-vault authorization (optional)

Single-user setups do not need this. Add TUGRA_AUTH only when several agents share one vault and each needs its own profile (mcp-readonly@tugra and others as JSON files in that directory). A missing profile then returns unauthorized. An empty TUGRA_AUTH is treated as unset — single-user mode stays on.

Host library surface (not the MCP wire)

The MCP tools (fact_search, fact_read, fact_propose, event_report) enforce authorization on every call. The published package also ships dist-paket/akis.js and dist-paket/yetki.js so a host application (cron, mirror, cockpit) can write telemetry without going through JSON-RPC.

Those modules are public on purpose. akisBildir({ atlaYetki: true }), eylem: "yetki_talebi", and dosyaYoksaIzin (default true) skip or relax the check. harcamaEkle mutates a profile. The host that imports them owns authorization. The MCP wire cannot set these flags — the tool schema does not accept them.

Scale vault vs target vault

A0–A5 levels are facts (yonetisim.yetki.a0 … a5) in a vault. The stdio server reads them from TUGRA_VAULT, or from the cockpit kasa/ when that variable is unset.

tugraArac / createTugraMcp take an optional kasaKok (the write/search target). Scale does not follow that target. It defaults to varsayilanKasa() — the same central vault the stdio server uses. A host that points kasaKok at a data-only tree keeps using the cockpit / TUGRA_VAULT scale. To read scale from a different tree, pass skalaKasa explicitly.

All four tools share one resolver. This is the contract: separate target + central governance stays reachable. YAYIN/12 briefly defaulted scale to kasaKok; that broke the split-root host. YAYIN/13 restores the central default.

What we do not guarantee

  • No cloud sync. The vault is the files you pointed at. Nothing is uploaded.
  • No automatic merge. Two writers, two files. You reconcile.
  • No delete in this release. Retirement exists; erasure is later.
  • No automatic conflict detection. Contradictory facts can sit side by side until a human says otherwise.
  • No hosted service. npx tugra is a local stdio process.

This package is not published as a SaaS. There is no price table here.

Requirements

  • Node.js 20 or newer. This is a support decision, not a technical floor: the package is tested on 20 and 22 in CI, and it also runs on 18 — but 18 is past its end of life, so we do not support it.
  • A vault directory you own

Topic map (optional)

<vault>/_konu-haritasi.json — { "desen", "bayrak", "konu" } rules in harita, alt_kirilim, and stem. If the file is missing the map is empty: unknown text falls back to kurum.genel or dunya.<world>.genel. Broken or over-long patterns are skipped and logged. This package does not ship a company taxonomy.

License

Apache-2.0. See LICENSE and NOTICE.

The marketing page lives in ../site/ (npm run preview there). It is not deployed from this package.

Compatibility: TUGRA_KASA, TUGRA_AKIS, TUGRA_YETKI (and the older TALAMUS_* / MULTI_* names) still work as a fallback when the English name is unset.

来源:README.md,提交 ec89372

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.4最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Openforallofus 集成