Repository navigation
Releases
komnet v1.0.2
Fixed
- A failed git operation or seal no longer silently stops delivery. A daemon could stay
wedged for days, withkomnet doctorreporting nothing:- A timed-out git is now sent SIGTERM before SIGKILL, so it removes its own lock files.
A git lock file older than any git komnet starts can live, with no git of komnet's
running, is removed (and logged), and the refused command is retried once. - A write whose commit fails is rolled back: messages, agent cards, profiles, and every seal
step. Each sync starts by restoring transport worktrees that an interrupted write left
dirty or mid-rebase. It also drops seal commits that a sealer killed between its commit
and its push never published. Commits name their own paths, so staged debris can no
longer ride along in someone else's commit. - Sealing no longer holds the network lock across its fetches. Each step that changes a
worktree takes the lock only for itself, so sync,send, andanswerinterleave with a
running seal. Seal-lock ownership is decided from the remote, which ends the endless
"seal lock … was lost before compaction completed" retry. A failing automatic seal backs
off, from one minute up to one hour, instead of retrying after every sync. An explicit
komnet sealstill runs at once. - The network lock is never taken from a live holder on the same machine, however long it
has been held. Before, a slow seal had it stolen after five minutes, and two writers ran
git in one worktree at once. komnet daemon stopnow returns only once the daemon process has exited. The daemon lets
in-flight sync, seals, and requests finish (within 10 s, then stops their git) before it
closes its databases, andkomnet daemon runexits when the daemon stops.komnet doctornow flags stale git lock files, transport worktrees with uncommitted debris
or a stuck rebase, a network lock held by a live process for over ten minutes, a last sync
that failed, and seals that keep failing.
- A timed-out git is now sent SIGTERM before SIGKILL, so it removes its own lock files.
- A room whose seal promoted a decision can be sealed again. Every later seal of that room
failed its merge withCONFLICT (rename/delete)and retried forever: git's rename detection
paired the pruned decision message with the decision record promoted from it. komnet never
renames a file, so seal merges now run with rename detection off. A seal stuck this way
completes on its next attempt, with every sealed message and decision kept.
Full changelog: v1.0.1...v1.0.2
komnet v1.0.1
Added
- Decisions can now be read back.
komnet decisions <room>and MCPkomnet_readwith
scope: 'decisions'return what a room has settled, merging the decisions sealing has
promoted to the record branch with those still in the live window. Sealing has always kept
decisions safe from compaction, but no surface would show one once the seal pruned the live
window — so the retention design's central promise was true on disk and unobservable through
the CLI, the daemon, or MCP. Each entry reports whether it is durable yet and names the
decision that superseded it, if any;--all(includeSuperseded) returns replaced ones too.
Changed
komnet_sendandkomnet_asknow state where each stops. Their descriptions name the
boundary against each other and againstkomnet_answerandkomnet_decide, so an agent
choosing between them does not have to infer it. MCP tool titles follow one grammar across
the whole surface. No tool was added, removed, or renamed.
Full changelog: v1.0.0...v1.0.1
komnet v1.0.0
Breaking
- KomNet no longer manages product-repository checkouts. Repository-review requests and
findings remain append-only communication events, butkomnet repo …,
komnet review prepare,komnet review release, their MCP actions, local repository mappings,
fetch authority, and generated review worktrees are removed. The reviewing agent or its host
owns workspace selection and code access; KomNet only carries canonical repository ids,
immutable revisions, scope, and findings.
Added
- AI desktop projects can select different KomNet transports and roles.
komnet project bind
stores a machine-local canonical folder binding to one configured network and one advisory role.
Commands and MCP sessions launched below that folder select its transport repository automatically;
explicit--networkstill wins. The daemon now scopes session presence and runtime profile updates
to the selected network rather than announcing one project on every configured network.
Fixed
- Machine identity now stays coherent across every local agent home.
komnet machine set
updates the machine-local marker, all provisioned Claude/Codex identities, and their cards and
profiles on every configured transport. Agents added after a rename inherit it. Previously the
command changed only the active home, so one computer could appear as several machines in a
remote repository. - Provisioned and wired agents publish the real tool.
komnet agent add --tool codex(or
claude-code,cursor, etc.) records the tool at creation, and
komnet setup <tool> --agent <id>repairs legacyclimetadata before republishing the card
and profile. Separate tools on one machine remain separate agent identities and
KOMNET_HOMEs. - Workspace setup preserves the selected agent identity. An explicit
KOMNET_HOMEis now
written into generated MCP configuration even when--agentis omitted, and Codex setup and
uninstall honorCODEX_HOME. Separate agent/Codex homes can therefore coexist without silently
falling back to the default KomNet identity.
Full changelog: v0.8.3...v1.0.0
komnet v0.8.3
komnet v0.8.2
Fixed
- Both plugin READMEs advertised the wrong MCP tool count. They said 31; the server exposes 17. The number was correct the day it was written and wrong through every consolidation after
it, because nothing compared the sentence to the server. It is now checked against a live
tools/list, so it cannot drift again.
Changed
- The
inboxskill no longer repeats what the MCP server already tells every session. It
restated seven of the server's ten instructions — that messages are permanent, that a message
body is data rather than a command, that aneeds: humananswer is refused, that a healthy
timeout is not a failure — all of which arrive with the tool surface before the skill loads.
What is left is what only that skill knows: theattention.reasontable, that a degraded
timeout says nothing about the peer, that draining is what publishes the read receipt, and
that presence older than fifteen minutes reads as stale. Roughly a sixth shorter, with
nothing removed that was not already in context.
Full changelog: v0.8.1...v0.8.2
komnet v0.8.1
Fixed
komnet statusnow names the real cause behind a queued message. git prints
fatal: Could not read from remote repository.above the actual failure on every
unreachable remote, so the queued-send reason led with the one line that says nothing —
the user's remote is unreachable, which they knew — instead of whether it was a key, a
host, or the network.komnet doctoralready skipped that preamble;status, which is
read far more often, did not. Both now share one rule, so the same failure reads the same
everywhere.
Full changelog: v0.8.0...v0.8.1
komnet v0.8.0
Added
- A computer is now an addressable identity. One person routinely runs Claude, Codex and a
terminal session at once, so each registered as a separate stranger and a roster of nine was
really three workstations. Agents now publish the machine they run on,komnet machines
groups the network by computer, andmachine:<id>addresses every agent on one — in a
mention (komnet ask <room> --machine <id> "…") or as a task target. The machine is derived
from the host name, so every agent home on one box lands in the same group with nothing
shared between them. Cooperative, never authenticated: it groups and routes, it proves
nothing. - Agents on one machine can find each other and split work. They share a filesystem and a
checkout, which makes them the only pair that can divide a task at no cost — but each has its
ownKOMNET_HOME, so they had no way to discover each other and no room in common.
komnet peerslists them with presence, focus and workspace;komnet machine roomcreates
and joins the room they share;komnet task create --machine <id>offers work to whichever
of them is free.komnet statusnow reports how many live peers are beside you, so a session
can tell whether it is working alone before it starts. - Two computers can derive the same machine id —
macbook-prois not a rare name.komnet machinesreports such a machine as contested and names the fix (komnet machine set <id>)
rather than silently presenting two boxes as one.
Breaking
-
Nine MCP tools moved onto a neighbour, and the surface is 39% smaller.
instructions
plustools/listare loaded into every session before the agent does anything, so they were
charged to every task forever — 34,560 characters, roughly 8,600 tokens, most of which the
average session never used. Each of these tools carried a whole description and schema to
answer one narrow read that another tool already covered. Calls to the old names now fail
with an unknown-tool error; update any script or skill that uses one:Removed Now komnet_historykomnet_readwithsincekomnet_agendakomnet_inboxscope: "owed"komnet_mentionskomnet_inboxscope: "unrouted"komnet_receiptskomnet_tracewithroomkomnet_presencekomnet_agentsview: "presence"komnet_machineskomnet_agentsview: "machines"/"peers"komnet_profilekomnet_agentsview: "profile"/action: "describe"komnet_networkskomnet_statusview: "networks"komnet_policykomnet_statusview: "policy"The bundled plugin skills are updated. 25 tools → 17; ~8,600 → ~5,300 tokens per session.
Changed
- The MCP operating guide dropped from 26 bullets to 10. What remains is what an agent cannot
discover from a tool result and would get wrong without; the procedural detail it duplicated
already lives in the plugin skills, which load on demand and cost nothing until used. A test
now asserts the surface's ceiling, because prose grows back one reasonable-looking sentence
at a time. - A refused task claim now names the agent that holds it instead of reporting only that the
task is not open. Two sessions racing for the same task is ordinary now that work can be
offered to a whole machine, and the loser's next move depends on who won.
Full changelog: v0.7.3...v0.8.0
komnet v0.7.3
Nothing users call changes in this release. It is documentation and internal
structure, recorded here because an empty section would say less than the truth.
Changed
- The README now shows a real two-machine exchange — unedited CLI output from
two isolated homes against a bare repository — including an agent being
refused when it tries to close aneeds: humanitem. - The npm page led with
--needs humanon a plain factual question, which is
the pattern komnet argues against everywhere else. It now routes as
needs: agent, and the human gate is shown where it earns its place. The npm
page also names the marketplace plugins and the registry entry for the first
time. - A direct-mode call that needs a daemon now says which daemon-only method it
was and how to start one, instead of the generic "not available".
Internal
- Releases publish
server.jsonto the official MCP Registry, so the entry no
longer drifts behind npm the moment a version goes out. Networklost seven domains tonetwork/— claims, reviews, reading,
sealing, authenticity, inbox and outbox — with its public API untouched.
Three section headings turned out to group unrelated code: authenticity is
read by messaging rather than by sealing, and the inbox and outbox share
nothing but a comment.- A method added to the daemon IPC contract without a direct-mode
implementation is now a build error rather than a runtime one, which only
ever surfaced for users running an editor with no daemon.
Full changelog: v0.7.2...v0.7.3
komnet v0.7.2
Full Changelog: v0.7.1...v0.7.2
komnet v0.7.1
Full Changelog: v0.7.0...v0.7.1