ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Aletheia

โดย firatmioรุ่น 0.1.1i★ –iรันบนเครื่อง
ชื่อใน registryio.github.firatmio/aletheia

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Project memory for coding agents whose memories carry code evidence, re-checked on every recall.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: เครื่องมือนักพัฒนา

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ต้องเตรียมก่อน

  • npmติดตั้ง Node.js (มีคำสั่ง npx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "aletheia": {
      "command": "npx",
      "args": [
        "-y",
        "@firatmio/aletheia",
        "serve"
      ]
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add aletheia -- npx -y @firatmio/aletheia serve

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "aletheia": {
      "command": "npx",
      "args": [
        "-y",
        "@firatmio/aletheia",
        "serve"
      ]
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "aletheia": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@firatmio/aletheia",
        "serve"
      ]
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub firatmio ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด เครื่องมือนักพัฒนาi

  • ดาวมากกว่า 0% ของอีก 4924 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 72% ของอีก 4924 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 4924 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Aletheia ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.1) เข้า registry 15 วันที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

GitHub

server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้

โดย githubใช้กันมาก★ 34.2Kอัปเดต 5 วันที่ผ่านมา

บนเครื่องหรือคลาวด์

Desktop Commander

MCP server for terminal commands, file operations, and process management

โดย wonderwhy-erใช้กันมาก↓ 709.6K/สัปดาห์★ 10.2Kอัปเดต 17 วันที่ผ่านมา

รันบนเครื่อง

Cloudflare MCP

Cloudflare MCP servers

โดย cloudflareกำลังโต★ 4.4Kอัปเดต 14 เดือนที่ผ่านมา

รันบนคลาวด์✓ mcp.cloudflare.com

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

Memory your coding agent can verify.

Every memory carries evidence from your code. Aletheia re-checks it on every recall,

points your agent at the exact lines, and keeps stale facts out of its context.

Quick start · How it works · Results · Reference

The problem

Coding agents forget everything between sessions, so they re-read the same files every time. Memory tools fix the forgetting, but they rank memories by similarity, and an outdated memory looks just as relevant as the fact that replaced it. The agent then builds on something that stopped being true weeks ago. A confidently wrong memory is worse than no memory.

How it works

  • Memories carry evidence. Each memory is a claim plus anchors: a function that must still exist, a line that must still match, a file that must still be there.
  • Evidence is checked on every recall. The checks are mechanical: no model calls, no embeddings, no network. A memory whose evidence broke is hidden from the agent, and a one-line note says so.
  • Moved code is followed. When a Go declaration moves unchanged to another file, its memory comes back as [moved] with the new place instead of going stale.
  • Recall points at lines. A pointer such as builtin_test.go:263 is computed from the files right now, so the agent opens the right lines instead of searching for them.
  • Maps write themselves. When the agent stops, Aletheia reads the session transcript and records which files the task changed. The next task of the same kind starts there, and the agent spends no turns writing it down.
  • Nothing is deleted. Replaced memories are superseded and long-stale ones archived by aletheia lethe (Lethe, the river of forgetting).

Quick start

1. Install it in whichever way suits you. Every option gives you the same single binary:

npm install -g @firatmio/aletheia                             # Node 18+, any OS

go install github.com/firatmio/aletheia/cmd/aletheia@latest # Go 1.24+ scoop bucket add firatmio https://github.com/firatmio/scoop-bucket; scoop install aletheia # Windows brew install --cask firatmio/tap/aletheia # macOS, Linux

Prebuilt archives for Linux, macOS and Windows are on the releases page.

2. Connect your agent.

*Claude Code, with the plugin (recommended).* It brings the MCP server and both hooks. /aletheia:setup then initializes the project:

/plugin marketplace add firatmio/aletheia

/plugin install aletheia@aletheia /aletheia:setup

*Claude Code, without the plugin.* Set up the project and add the two hooks yourself. Recall then happens on every prompt and costs the agent nothing:

cd your-project

aletheia init --agents --claude-hooks # .aletheia/, usage notes in CLAUDE.md and AGENTS.md, hooks in .claude/settings.json aletheia hook --dry-run # what an agent would get (add a prompt to try one); changes nothing

Run --claude-hooks yourself. Agents are usually not allowed to change their own hooks, and that is by design. Don't add these hooks if the plugin is installed: it brings the same two. init notices the plugin and says so. To edit the file by hand instead, use this:

{

"hooks": { "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "aletheia hook" }] }], "Stop": [{ "hooks": [{ "type": "command", "command": "aletheia hook" }] }] } }

*Any other agent.* Cursor, VS Code, Claude Desktop and Codex connect over MCP; agents without MCP use the CLI. See Other agents below. An MCP client configured with npx needs no install at all: {"command": "npx", "args": ["-y", "@firatmio/aletheia", "serve"]}.

An agent can also do the setup itself from the agent guide. It hands the hook step to you as that single command.

Memories live in .aletheia/memories/*.md as plain Markdown. Commit them and your team, and every agent, shares one memory that verifies itself on each machine.

Upgrading: npm update -g @firatmio/aletheia, scoop update aletheia or brew upgrade --cask aletheia. With Go, run the same go install again. Update the plugin with claude plugin update aletheia@aletheia.

  • Which version runs: the hooks use the new binary right away. The MCP server keeps the old one until the agent restarts.
  • With `go install` on Windows, a running agent keeps aletheia.exe open through the MCP server, so the install fails with "file in use". Quit the agent first, or move the old binary aside, which Windows allows for a running exe.

This works on every upgrade. It removes old copies that are no longer in use, and the random name never collides with one that is still running:

$bin = "$(go env GOPATH)\bin"

Remove-Item "$bin\aletheia-old*.exe" -ErrorAction SilentlyContinue Rename-Item "$bin\aletheia.exe" "aletheia-old-$(Get-Random).exe" go install github.com/firatmio/aletheia/cmd/aletheia@latest

Results

We measured with headless Claude Code (Opus 5.5) on real repositories. Each task ran with and without Aletheia, and the same hidden acceptance tests judged success.

RepositoryTasksCostAlsoTasks passed
gohugoio/hugo, a large site generator (233k lines of Go)14 tasks of five kinds, one run each−15%: −22% on seven tasks of one kind, −7% on a mixinput tokens −27%, turns −21%14/14, same as without
expr-lang/expr, a mid-size expression language7 tasks, two runs−9% in both runscode read before the first edit −48%14/14, same as without
go-chi/chi, a small, tidy router7 small tasks, two runs+5% and −5%: break-even14/14, same as without

Aletheia pays off where finding the right place is expensive, in mid-size and larger codebases, and most when the same kind of change comes back. Expect the mixed figure for everyday work. On a small package that an agent reads in one or two calls there is little to save. The method, the raw numbers and what did not work are in docs/dogfood-4.2.md.

Reference

Anchors

AnchorHolds whileExample
symbol:PATH::NAMEthe file still declares that function, method (Type.Method), type, var or constsymbol:store.go::Store.Get
contains:PATH::REGEXthe file still matches the regular expressioncontains:go.mod::^go 1\.23$
exists:PATHthe path still existsexists:src/auth
file:PATHthe file's content is unchanged (hash sealed when saved)file:go.mod
  • Use symbol for claims about one declaration and contains for one thing in a file. Use file only when any change should trigger a re-check.
  • Recall shows where symbol and contains evidence is right now, e.g. (store.go:15-21). Go declarations get their full range from go/parser. In other languages a symbol anchor finds the declaring line by its keyword (function, class, def, fn and the like); it is not sealed, so it cannot follow a move.
  • Moved code. A Go symbol anchor is sealed with a fingerprint of the declaration (symbol:store.go::Store.Get@3f9a…). The fingerprint ignores comments and layout.
  • Edits in place: they never stale the anchor. If the declaration is still in its file, the fingerprint is not even consulted.
  • A moved declaration: if the declaration leaves its file, Aletheia searches the project for it. When exactly one declaration with that name has the same fingerprint, the memory comes back as [moved: old.go → new.go] with the new lines, and verify --reseal records the new path.
  • Anything less certain stays stale and hidden: the code changed on the way, several copies match, or the claim names the old file.
  • `contains` anchors in Go code: when one matches inside a single declaration, remember adds a sealed symbol anchor for that declaration. The contains anchor then moves with it, but only if its pattern still matches inside that declaration at the new place.
  • In a contains pattern, a run of spaces matches any run of spaces or tabs, so reformatting does not stale it.
  • Files named in a claim get an exists: anchor automatically.
  • Leave paths to the anchors: say what the code does ("Tokens are issued by IssueToken"), not where it is. A claim that names its symbol's file stays stale when the code moves, and remember says so when you save one.
  • remember warns when a contains anchor only matches comments, since a comment can stay while the code changes.
  • A memory without anchors comes back as [?], ranked below verified facts, and expires after 90 days unless re-confirmed.

When a memory goes stale, re-check the claim, then:

aletheia verify 3f9a1c --reseal                                   # still true: refresh the evidence

aletheia remember "…new claim…" --anchor … --supersedes 3f9a1c # changed: replace it

--reseal refuses when a contains, exists or symbol anchor no longer holds, so a false claim cannot be quietly blessed.

Code map

aletheia map " " lists the files most relevant to a topic, each with its key declarations and their current lines:

optimizer/fold.go: fold.Visit 15-311, fold 10-13, toFloat 329-335

builtin/builtin.go:

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx