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 整合