Repository navigation
v0.1.0
Added
-
llmpro syncimports the chats, memories and instruction files of Claude Code,
Codex, Copilot, Copilot CLI and opencode into one git store, with secrets redacted,
commits them and exchanges commits with the hub.--localleaves the hub out, and
-nshows what a sync would do. -
llmpro setuplinks each tool's folders to the store and installs the git hooks.
-nshows what is missing.llmpro uninstalltakes llmpro off a machine and
keeps the store. -
llmpro checkscans the store for secrets, and checks it against the secret
values in the tools' own logs.--staged,--historyand--near-misschange what
it looks at;--fixrebuildsmemory/INDEX.md. -
llmpro findsearches past chats and memories. -
llmpro summarysets the summary at the top of a conversation. -
llmpro mcpservesfind,checkandsync_statusto assistants over stdio. -
llmpro --version --jsonprints the version and the capabilities, so other tools can
check what this llmpro supports. Every--jsonoutput carriesokandcommand. -
Plugins: llmpro finds plugins through the
llmpro.pluginsentry point group. The
built-in ones aregit,memoryandsecrets. Setup shows each plugin's state. -
gitpro support. llmpro finds the
gitproprogram (0.4.0 or later;$LLMPRO_GITPRO
overrides the path) and never imports it. gitpro stays a separate tool.llmpro git ...runs gitpro with the same arguments.llmpro mcpalso serves gitpro's read-only tools, namedgit_*.llmpro setuprunsgitpro setupin the same preview and question, and
llmpro uninstallleaves gitpro's setup in place.
-
llmpro setupregisters the MCP server with Claude Code and Codex through their own
mcp addcommands, and adds the store'sAGENTS.mdand the MCP server to opencode's
config (after a backup; a config with comments is left for the user to edit). -
A push guard for every repo: with gitpro's global hooks,
[guard] chain_tocan point
at llmpro's hook folder, and each push is then checked for secrets in the lines it
adds. setup adds that line to gitpro's config itself (after a copy), runs
gitpro setup -y --agent none, and uninstall takes the line out.LLMPRO_SKIP=1
lets one push through. -
[privacy] local_identitiesinconfig.toml: chats of repos that gitpro places under
one of those identities stay inlocal/. When gitpro cannot place a folder, its
chats stay local. A chat that was shared before is listed, not moved. -
The
llmproskill, for every assistant: setup writes it to the store'sskills/and
keeps it up to date, and leaves a copy alone once its first marker line is taken out. -
A Claude Code plugin in this repo, with the skill, the MCP server and a hook before each
Bash call that asks gitpro (when it can) whether the git identity is right. Install it
with/plugin marketplace add Yantrakar/llmpro, then/plugin install llmpro@llmpro. -
Lessons: a feedback or project memory may carry
cue,evidenceandconfidence.
llmpro checkfails a lesson that cites a chat that is not there, or a file under
local/orsessions/. AGENTS.md and the skill ask for at most one lesson per
session, and "confounded" rather than a guess. The idea comes from Google Research's
harness2 (Apache 2.0); no code was copied. -
[harness]in config.toml names the seven parts of the harness the store holds:
instructions, memory, skills, subagents, hooks, guardrails and scripts.
llmpro setup -nshows which tools get each part, andllmpro setupplaces them:- it creates a missing part folder with a README;
- it links each tool's subagents, hooks and skills folder to the tool's own folder in the
store, moving files already there into the store first and leaving a name clash
alone; - it puts executable scripts on PATH through
~/.local/bin; - it installs Claude Code's hooks and guardrails as two plugins from a local
marketplace in the store (llmpro-harness), withclaude plugin.
llmpro uninstallreplaces each link with a copy and removes the two plugins. -
Each chat's frontmatter records
harness:, the store commit current when the chat
started.find --jsonhistory hits carry it. The first sync after upgrading adds it to
every chat whose source is still on the machine: a one-time rewrite of those files. -
llmpro find --shared-onlyleaves out local-only chats. -
llmpro resumelists the open Claude Code, Copilot CLI and opencode sessions on this
machine, those waiting for you first, with how long each has waited and one line of
what it said. It reads each tool's own records and writes nothing.--jsongives the
same list as data, and--no-lineleaves out every line. Live sessions need Linux. -
[machines]in config.toml names other machines.llmpro resumeasks them all at once
over ssh, without a password, and lists their sessions too;--localasks none.
setup -nsays whether each machine can be asked. The MCP server gains a read-only
sessionstool, which leaves out every content line and every local-only session. -
llmpro resume TARGETcontinues a session, by number, name or id, here or on its
machine over ssh. A session open elsewhere is refused, and two llmpro cannot continue
the same one at once. The tool runs in the session's folder without the variables
that tell it it runs inside another tool, and llmpro says if it changed an editor
settings file.-nshows what it would run. -
llmpro resume --watchkeeps the list current and lets you pick a session from it. A
desktop notice says when a session starts waiting for you; a session in a local-only
folder is not named in it. Other machines are asked over one shared ssh login each.
[sessions] refreshandnotifyin config.toml set the pace and turn notices off.
--json --watchprints the list again whenever it changes. -
llmpro send TARGET TEXTgives one message to a session that is not open, to an
opencode session, or to a new one (claude:new --folder DIR), and prints the answer.
The message goes on stdin, and no flag that allows tools or skips a permission is
ever added (COPILOT_ALLOW_ALLis dropped from its environment). A hop count, a
limit per hour and a timeout that ends the tool and everything it started keep
sends from running away. From inside a session, a send
to a local-only project is refused.-nshows what it would run.sendis not an
MCP tool. -
llmpro resume TARGETtakes over a session open in another terminal on this machine,
but only while it is idle: waiting for a reply for at least 10 seconds, its terminal
untouched for a minute, and no child processes. It asks once (-yanswers yes), stops
the process, checks again, then sends SIGHUP and continues the session here. It never
sends SIGKILL. A session on another machine is taken over by that machine's llmpro.
-nshows the check and the plan.
Changed
- The MCP
findtool never returns local-only content: it always passes
--shared-only, and a last check drops any hit underlocal/orsessions/(it
says how many withwithheld).llmpro findat the terminal still searches them. - Every
llmpro syncfailure says what failed, what state the store is in, and what to
run next. The desktop notice carries the whole message, under the app name llmpro. - Every
llmpro setupandllmpro uninstallfailure says the same: what failed and
why, what the run had changed before it stopped (and the undo script for that), and
the command to run next. Parts setup leaves alone, such as a name clash or a plugin
claude cannot install, are listed under "For you to do by hand". - Tests no longer pop up desktop notices:
notify-sendis found like every other
outside program. - The project is now called llmpro, and so is the command. There is no
agentspro
command any more. Coming from agentspro: install llmpro, runllmpro setup(it
rewrites the store's hooks and merge driver that still callagentspro), then
pipx uninstall agentspro. If agentspro goes first, a commit in the store fails,
because its hooks call a command that is gone;llmpro setuporllmpro syncfixes
that. New undo scripts go to
$XDG_STATE_HOME/llmpro; earlier ones are still found under the old name. - The push guard's hook folder is made with mode 0755, and setup makes an existing one
private (chmod go-w): gitpro refuses achain_tofolder that others can write.
setup now adds thechain_toline itself instead of asking you to.