Anything from building decks to writing code and running research experiments, done by the agents on your own machine. Open source and self-hosted.
$ curl -fsSL https://raw.githubusercontent.com/wak31415/keryx/main/install.sh | sh
Apache 2.0. Runs on your machine with your own keys. Works with Claude Code and Codex.
Agents stop to ask things, and you usually find out hours later, back at the keyboard. With Keryx the question finds you. Your phone rings, you answer it, and the work carries on.
When the work reaches a decision that's yours to make, Keryx calls, reads you the question and hands your answer straight back to the agent. Say it the way you would at the keyboard.
When a session on your desktop stops for permission and you're away, Keryx rings you after five minutes. Press 1 to approve. Speech alone can never approve anything. This works with Claude Code sessions today.
A result you haven't heard opens your next call, and stays there until it's been said out loud. Keryx remembers what you asked across calls, so “how's the sweep going?” just works.
The call
In the background
Brief it the way you'd brief a colleague before you leave for the day. Lyra is the assistant on the line by default, and you can rename it.
“Run the ablation grid on both clusters tonight. Kill anything that diverges, and have the plots in Slack by eight.”
It calls only when there's a decision that's yours to make.
“Merge the release stack bottom up once CI is green, tag v1.4.0 and write the release notes.”
It calls if two PRs conflict, and again when the release is out.
“Reproduce Table 2 from the paper tonight. If a number is off by more than a point, find out why before I wake up.”
What it found opens your next call.
“Triage every open issue. Fix the small ones, open the PRs, and bring me the ones that need a design decision.”
The PRs are up by morning. The design questions come to you on a call.
“Find the 30% latency regression since Monday and open a fix. Ask me before you touch the database schema.”
If the fix needs a migration, it calls to ask first.
“Upgrade yourself to the latest release, and call me from the new version.”
It installs while you're on the line, restarts once you hang up, and rings back to say which version it's on.
About twenty minutes on a machine that stays on, such as a desktop or a home server where your projects live.
One line installs the keryx command from PyPI, with both coding agents, in an environment of its own. You don't need Python, uv or a clone.
$ curl -fsSL https://raw.githubusercontent.com/wak31415/keryx/main/install.sh | shThe install opens it. It asks only for what's still missing: your OpenAI key, a coding agent, the Twilio number and tunnel, and a PIN. It saves as it goes, and its last step starts the background service. To pick it up again later:
$ keryx setupDoctor checks the whole setup and says what's missing or broken.
$ keryx doctorThe first call is a short introduction, so Lyra knows who you are. After that, every call starts with whatever you haven't heard yet.
Setting it up with a coding agent? Point it at keryx setup --agent-instructions.
To update, run keryx upgrade, or ask for an upgrade on a call.
Working on Keryx itself? Set it up from a clone, and a call can change its code and restart onto it.
Turn on what you use with one command. Each call reads them afresh, so there's nothing to restart.
Written messages and full task reports in your Slack DM.
send_to_slack
Answers about your inbox in about five seconds, from a read-only Gmail sign-in.
check_email
What the month has cost on OpenAI or Anthropic, and where it's heading.
check_billing
What's free on your Slurm clusters and whether your jobs are still running.
cluster_stats
$ keryx plugins install send_to_slackAnything else, ask for on a call. Keryx writes the tool to your own tools folder, outside the repository, and it's there on your next call.
What's shipped and what's next. The checklist for each version is in docs/roadmap.md.
The first release: calls, tasks that outlive them, call-backs, memory across calls, and desktop permission prompts answered by phone.
Security and reliability fixes from an audit of 0.1.0.
Full task reports in Slack, and no call-back on top of a call you're already on.
A one-line install from PyPI, keryx upgrade, and upgrades you can ask for on a call.
Run the work and the voice on your own hardware, so a call and what it starts can stay on your machine.
Say a wake word and talk through the Mac's microphone and speaker, with no phone and no Twilio.
Keryx runs where your projects are, with your own OpenAI key and your coding agent's own sign-in. Transcripts and memory are plain files on your disk.
Caller ID can be spoofed, so starting work, changing settings or restarting waits for your PIN. Read the security model before you put it on a phone line.
2,905 tests and at least 96% coverage. Bug reports, fixes to the docs and code are all welcome.