GitHub
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Local memory, a work tracker and a shell-command guard shared by coding runners on one machine.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ผู้ทำยังไม่ได้ใส่วิธีติดตั้งใน registry ให้ดู README ของผู้ทำด้านล่าง
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub leidarljos ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.39.0) เข้า registry เมื่อวาน
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Rust ในเครื่องด้วย
ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Claude Code, Codex, Cursor and other coding runners work on one person's repositories. A new session does not keep the last session's lessons. Two agents can claim the same work. Nobody can see who decided what.
ljos is the record of who decided what: memory you write on purpose, a git-backed ticket tracker that agents share, and a warner for shell commands.
You install it once on a machine. Each agent gets a seat on a tracker. The tracker is a git repository of tickets. A seat files a ticket and opens a sitting on it. A sitting claims that ticket and gathers the checks and memories for the task.
Checks from the sitting include a shell warning. ljos warns about a shell command and does not stop it. ljos-policyd names a short list of dangerous actions. It is not a sandbox. A command that runs as you, outside a tool call, is not checked. If policyd is missing, slow, or crashes, the command runs and ljos logs a warning. Warning lines sit apart from ballots and votes, which are also separate from memory. A person stores a lesson with ljos remember, or a preference with ljos prefer. The words are kept as written. At the end of a session, ljos reads the transcript. It keeps up to five sentences that state a rule, a cause, or a fix. Each sentence is a note on the open sitting. The prompt hook does not show that note as a fact. Set LJOS_EXTRACT=off to skip the read. With no open sitting, it writes nothing.
A person can also record a grant that lets a seat close tickets. The grant stores the person's quote.
These notes describe ljos 0.39.0.
Linux and macOS are supported. Windows works through Windows Subsystem for Linux (WSL) and is untested.
curl -fsSLO https://github.com/leidarljos/ljos/releases/latest/download/install.sh && sh install.sh
export PATH="$HOME/.local/bin:$PATH" ljos doctor ljos prefer "Push a tag with git push origin TAG; --follow-tags skips lightweight tags." echo "how do I push the v0.32.0 tag?" | ljos hook --prompt --text ljos due
The installer puts the programs in ~/.local/bin. It sets up the tracker and the memory writer, then runs ljos onboard. ljos doctor names any part that does not answer. The preference is stored as written. The hook then prints that preference ahead of the prompt. ljos due lists what is ready to grade.
Some rules hold everywhere. Citing a deed does not merge anything. Finishing a claim does not close the ticket. A person closes it. Cards are notes a person froze. Agents read them and do not write them. Consensus is a separate program.
curl -fsSLO https://github.com/leidarljos/ljos/releases/latest/download/install.sh && sh install.sh
export PATH="$HOME/.local/bin:$PATH"
The programs go to ~/.local/bin. The installer checks each download against its published SHA-256 sum. It also checks the build attestation when gh 2.49 or newer, or cosign, is there. Where a platform has no release build, cargo compiles the programs from source. The compile needs Rust 1.89 or newer.
The installer then runs ljos onboard for each coding runner it finds. With none found, it still sets up the tracker, the pack writer and the deed store.
The programs are ljos, ljos-mcp, packset, vissue, deedar, claimdag, ljos-policyd and ljos-consensus. packset-embed is the encoder for meaning-based search. --no-embed leaves it out, and search then matches words only.
ljos upgrade moves each installed program to its latest published release. ljos, ljos-mcp and ljos-hud come from the ljos release. Each other program comes from the repository that publishes it. One line a program names the version it had and the version it has, or current when those are the same. A missing release, a failed download or a checksum that does not match is a warning, and the other programs still move. ljos upgrade --only NAME moves one program. The previous binary is kept as NAME.bak-pre-VERSION.
To install by hand:
cargo binstall --locked ljos packset vissue-cli vissue-mcp deedar-cli claimdag-cli ljos-policyd ljos-consensus
ljos onboard ljos doctor
ljos onboard writes the Model Context Protocol (MCP) entry, the hooks and the skill into each runner it finds. ljos onboard --dry-run shows what it would write. ljos onboard --example lists the runners ljos knows. ljos doctor says which part does not answer.
The part that does not answer can be the tracker path. Onboard makes no tracker inside a checkout of another project. A later git add -A commits a tracker left there. Onboard names the checkout. It asks for a VISSUE_ROOT outside the checkout. A path the checkout already ignores is fine.
Once the checkout path is fine, Codex runs a hook only after you trust it. Open /hooks in Codex and trust each ljos hook after ljos onboard, and again after an upgrade.
ljos offboard --dry-run
ljos offboard
ljos offboard undoes what ljos onboard wrote. It removes the ljos entries from each runner's files. It leaves the rest of each file as it was. --runner NAME takes off one runner only. --dry-run lists what it would change. Onboard keeps its manifest and backups under ${XDG_STATE_HOME:-~/.local/state}/ljos/onboard.
ljos uninstall --dry-run
ljos uninstall
ljos uninstall takes ljos off the machine: it offboards every runner, puts the global git hooks back, stops the hook server and removes the ljos programs. Where ljos was, it leaves a stub that answers every hook call with an allow, because a runner that loaded its hook list while ljos was installed keeps calling that path until it restarts. --no-stub leaves nothing, --all removes the other seat programs too, --purge removes the state, data and configuration directories. A hand-deleted binary still has the same uninstall script from the release:
curl -fsSLO https://github.com/leidarljos/ljos/releases/latest/download/uninstall.sh && sh uninstall.sh
The seat's hooks fail open on every runner: a ljos that is missing, crashes or times out lets the call run, and a hook that fails answers allow with a note that says why nothing judged the call. scripts/fresh-install-check.sh installs into an empty HOME. A full session runs next. Offboard runs after that session. The last check confirms that HOME is clean.
ljos prefer "Push a tag with git push origin TAG; --follow-tags skips lightweight tags."
echo "how do I push the v0.32.0 tag?" | ljos hook --prompt --text
Start a new session and ask for something the preference bears on. Before the model reads the prompt, the hook adds:
Remembered, oldest first (`ljos search` for more):
The hook uses a preference you type, and that preference takes effect at once. A lesson an agent writes at ljos finish is stored at once too, labelled agent-derived and unreviewed, and ljos accept ID marks it reviewed. A yes you said in chat is kept with the acceptance. The seat that heard it runs ljos accept ID --quote "..." --at TIME --via SEAT, and the acceptance keeps those words.
Two agents, alice and bob, each name their seat with LJOS_SEAT on the command. Alice adds both seats. One shell can then file, claim, vote, note and read. That shell casts one ballot. Bob writes a note from this shell. His ballot has to come from his own runner.
Seats cast ballots, and ljos consensus settles them. With two or more active seats, a protected push needs votes from two model families. A model family is the model a seat's verified record names. A seat with no such record is a family of its own. One active seat settles that check with its own vote. A panel seats each persona the ticket speaks to. Each persona casts its own ballot.
LJOS_SEAT=alice ljos seat add alice
LJOS_SEAT=alice ljos seat add bob id=$(LJOS_SEAT=alice ljos file "Pick a fuse" -p demo -t decision --options keep,drop | awk 'NR==1 { print $1 }') printf '%s\n' "$id" LJOS_SEAT=alice ljos claim "$id" --assignee alice LJOS_SEAT=alice ljos vote "$id" --for keep --used none LJOS_SEAT=bob ljos note "$id" "the patch is one file" LJOS_SEAT=bob ljos recall "$id" LJOS_SEAT=alice ljos consensus "$id" LJOS_SEAT=alice ljos digest
A second claim on a held ticket prints label claim-conflict: and names the holder. The ticket stays with that holder. A close with open children prints label children-open: and leaves the parent open. A block that would loop prints label graph-cycle: and does not store the edge. A persona ballot records the casting seat, the parent session and the persona. Every ballot is recorded. Ballots count as one voice when they share a session id, a parent, a calling shell or the root session of one agent runner. When they disagree, the latest ballot is that voice. ljos consensus names the ballots it folded and why, including that shell or agent runner. A subagent of that root session counts with its parent. A seat ballot is its own voice only when the cast has no shell, no agent runner and no earlier row.
The ballot list goes to ljos consensus. The command reads the pack's trust rows. The consensus crate settles the votes. With no rows, every voter weighs the same. ljos learn ID --outcome OPTION moves the rows toward the voters who turned out right.
The tracker's vissue.toml lists the seats.
ljos seat add carol
ljos seat add NAME writes the seat's row in vissue.toml, so nobody edits the file by hand. ljos seat prints the name this agent works under and where the name came from. That name is LJOS_SEAT when it is set. Otherwise ljos derives one from the runner, and a derived name counts as a seat.
Grants. A close=own grant lets one named seat close the tickets it filed or has claimed. An id list in close=ID[,ID...] names those tickets, and that seat may close no others. --ids-file PATH reads the ids, one per line. Without a grant, ljos finish leaves the ticket open for the person to close.
ljos seat grant SEAT close=own --quote "the person's words" --at ISO_TIME --via RECORDER
ljos seat grant SEAT close=ID[,ID...] --quote "the person's words" --at ISO_TIME --via RECORDER ljos seat grant SEAT --ids-file PATH --quote "the person's words" --at ISO_TIME --via RECORDER
The vissue.toml row records the quote, the time, the recorder named by --via, and the tracker commit. Three rules apply:
vissue.toml by hand is ignored.Solo mode. When vissue.toml lists one active seat, that seat's own vote settles consensus for the push check. With two or more seats, the normal quorum applies.
ljos digest reads the tracker and says what the seats did: what each filed, claimed, voted on, noted and finished. You read the same facts one at a time with ljos timeline ISSUE, ljos claims and ljos log --seat NAME.
Before an agent's shell command runs, the runner's hook hands it to ljos hook. ljos hook asks ljos-policyd and relays the answer. policyd is the one place that says whether a command is dangerous. ljos does not run a second set of command checks o
ตัดมาแค่ช่วงต้น อ่านต่อใน repo