Remove the Upgrading page and the troubleshooting pointers to it
Nobody but the owner has an install from before the rename or the plugins, so
the upgrade steps have no reader.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Troubleshooting: contractions, conditions first, shorter sentences
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upgrading: one page for the steps an existing install must take
Collects the Jarvis-to-Keryx migration, the assistant's new default name,
the move of the optional tools to plugins, and re-running the installers.
Troubleshooting keeps a one-line pointer for each error people search for.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drop the leading H1 from every page; GitHub already shows the page name
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keryx the service, Lyra the assistant: the wiki follows the rename
Every page says Keryx for the service and the assistant (Lyra by default) for the voice;
links point at wak31415/keryx and src/keryx; Restarting-Jarvis is Restarting-Keryx.
The wake word is still "hey jarvis", the pretrained model's name. Troubleshooting
covers serve refusing until `keryx migrate` has run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs: plugins, custom tools, and what landed on main since the last edit
New pages: Custom Tools (writing and checking your own voice tools) and Sharing Custom
Tools (a suggested convention for publishing them; there is no registry). The two worked
examples are rewritten as plugins. Every other page is checked against main: plugins in
place of the retired settings, jarvis plugins / jarvis tools, CLAUDE_CONFIG_DIR, a failed
restart that rings, TRANSCRIPTION_LANGUAGE and CLOCK_FORMAT.
docs: drop the upgrade-from-~/.jarvis notes; nobody outside has an old install
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
docs: Troubleshooting points at STATE_DIR logs and jarvis migrate
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
docs: troubleshooting follows doctor's new checks, the config store and the briefing before the PIN
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
docs: doctor's five new checks read as their own sentence
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs: doctor says what Jarvis knows and which optional tools it offers
Troubleshooting lists the five new warn-only checks (owner name, memory,
projects root, cluster_stats, send_to_slack) and gains entries for a Jarvis
that calls you "the owner", a brief left out past the 6,000-character total,
and an optional tool that is never offered. The command line reference and
the cluster_stats page say what doctor reports about them.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs: PROJECTS_ROOT defaults to ~/projects and is never created
Assumptions and Deployments gives the new default and what happens without
it: a task with no project, or whose project directory has gone, starts in
DATA_DIR/workspace. Data and Retention lists that directory, Troubleshooting
says why a task ended up there, and the approval bridge notes that a missing
root holds nothing and the workspace is never an approval root.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs: installers, restart supervision, texting off, and quiet read-only commands
Running as a Service says the installers render the installing shell's PATH
and log under DATA_DIR, so an existing install should re-run its installer;
the macOS tunnel agent is ngrok on a reserved domain, with the one-off setup;
and under SERVICE_MANAGER=auto a restart needs the process to actually run as
the unit (its cgroup, or XPC_SERVICE_NAME), while jarvis restart and doctor
ask whether the unit is installed.
Restarting Jarvis, Assumptions and Deployments and Troubleshooting follow:
texts go out only with SMS_ENABLED, a hand-started serve cannot restart
itself, a Linux serve says in one line that it serves the phone channel alone,
and log paths are given under DATA_DIR. The command line reference adds
jarvis --version and says read-only commands print only their answer.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs: the approval policy decides on exactly what will run
The Approval Bridge now describes the policy as it is: control characters and
metacharacters are checked on the raw command, the command is parsed to the
argv bash and zsh would build and matched word for word, only git push and
git commit take arguments (and only the listed ones), a request the hook had
to trim or a read-back that would be cut is never eligible, a test runner is
no longer in the default list, and no phone-approved write lands in .git,
.claude or .mcp.json. The hook is a copy, so it has to be reinstalled after
it changes, and the installer points it at DATA_DIR.
The tuning table lists APPROVAL_BASH_ALLOW and APPROVAL_ROOTS, and
Troubleshooting says where to look when the bridge never rings.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs: before the PIN the phone gets nothing, and wrong PINs count across calls
Security Model is one page again, built from two changes that landed
together: a phone call gets nothing private, has nothing announced into it
and leaves nothing behind until the PIN is in (five tools excepted), and wrong
PINs are counted across calls in pin-failures.json, with the lock, its price
and how to clear it. It also says what the wake word's missing PIN means, that
signature validation cannot be skipped behind a tunnel, and that at most
MAX_PHONE_SESSIONS calls run at once.
Data and Retention lists pin-failures.json and the approval socket, and says a
spoken PIN is redacted as it is written and that an unauthorized call's
transcript is never read back. Troubleshooting gains the lockout, the busy
line, the refused debug switch and a call that opens without its news.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs: the manual, moved out of the README
The README was 967 lines. The content was good, which was the problem: a front
door that takes twenty minutes to read is not a front door. It keeps what a
reader needs before they decide to install anything — what it is, the
architecture, setup, and how to write your own tools — and everything longer than
that lives here, in full rather than in summary.
Fourteen pages in three groups, which is also how the sidebar reads, grouped by
when you need them rather than by what subsystem they belong to: install and
operate it, decide whether to deploy it, understand one thing deeply.
Two things this wiki deliberately is not. It is not the rulings of record — the
design spec in the repository is, because a wiki is a separate git repository and
none of it arrives with a `git clone`, and the decisions that look like bugs until
you know them have to travel with the code. And it is not a settings reference:
`.env.example` and spec §3.4 already hold that, and a third copy is a third thing
to drift.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgnEwxB2L2ZqzTgq476MAt