Skip to main content

Keryx

A personal voice agent that keeps working after you hang up.

CI Apache-2.0 Python 3.12 Coverage at least 96%

Start hours of work from a short phone call: you can ask your assistant on the line to research a question, change code, or run an experiment. The work then continues on your machine, even after you hang up. You can check in or add instructions in a later call, and Keryx can call you back or text you the report when it's done. You can call from a phone, or from a watch that can place calls.

A Garmin watch showing an incoming call from Lyra.
Keryx triggers a callback after a task completed. I've named my voice companion Lyra, but this is configurable.

Example requests

"In the imaging project, run a learning-rate sweep on the microscopy images. Call me if you need a decision, and again when training finishes with a quick summary of the results."

"Find the papers my group emailed this week, turn them into a reading-group presentation with polished animations and some discussion questions, and send it to me on Slack."

"Add a voice command that checks whether my home server is up. Build it in the Keryx project and run the tests."

"One more thing: include GPU memory use in that sweep comparison."

Features

Keryx turns the Realtime API into a voice agent that you can use across many calls. This is how it compares with the Realtime API alone and with ChatGPT Voice, as of September 2026:

Feature Realtime API ChatGPT Voice Keryx
Live voice conversation and tools ✅ ✅ ✅
Phone calls, including from calling watches 🟡 SIP setup 🟡 1-800-CHATGPT, US/CA ✅
Email, calendar, and Slack by voice 🟡 via MCP ✅ ✅
Tasks that continue after you hang up — ✅ in Work ✅
Status and follow-ups in a later call — 🟡 in the app ✅
SMS links to written reports — — ✅
Call-backs when you ask for one — — ✅
Calls you when a task needs your input — — ✅
Add a feature to Keryx during a call — — ✅
Report a bug in Keryx by voice, filed as a GitHub issue — — ✅
Answer Claude Code prompts on your screen by phone — — ✅

System overview

Keryx (κῆρυξ) is Ancient Greek for a herald: a messenger who carries word back and forth. That's the job here. Keryx answers the phone, hands your request to a coding agent on your machine, and calls you back with the result. The messenger you talk to on the line is called Lyra by default, and you can rename it with keryx config set ASSISTANT_NAME ….

The conversation runs on the OpenAI Realtime API. Lyra answers small questions itself. Anything larger becomes a task for a coding agent and is handed to Keryx, which keeps running after you hang up.

In this example, one task spans three calls. Keryx calls back once so that Lyra can ask you a question, and again with the training results.

A call starts a tracked task that continues after you hang up and returns by SMS, callback, or a later call.

Coding agents: Claude Code or Codex

Tasks run on Claude Code or Codex, signed in with a subscription or an API key. Keryx is most extensively tested with Claude Code on a subscription. Codex is supported, but it may not have every feature. keryx setup asks which agent to use by default. If you enable both, you can say "have Codex do it" on a call. docs/agents.md compares the two.

Quickstart

Requirements

  • Linux or macOS, on a machine that stays on, such as a desktop or home server where your projects live. Keryx can't answer calls, keep working, or call you back while it sleeps.
  • An OpenAI API key with Realtime access.
  • A Claude or ChatGPT plan, or an API key, for the coding agent. Claude Code and Codex both come with Keryx.
  • A Twilio phone number.
  • A tunnel that gives Twilio a public address: Cloudflare Tunnel on Linux, ngrok on macOS.

Install and set up

  1. Install Keryx:

    curl -fsSL https://raw.githubusercontent.com/wak31415/keryx/main/install.sh | sh
    

    It installs the keryx command and starts keryx setup, a wizard that asks only for what's still missing and ends by installing the background service. Run keryx setup again at any time.

  2. Call your Twilio number.

keryx upgrade updates Keryx and restarts the service onto the new version. You can also ask for an upgrade on a call.

If a coding agent is setting Keryx up for you, point it at keryx setup --agent-instructions, or, in a clone, give Claude Code the skills/keryx-setup skill. The Setup guide on the wiki covers each step in detail.

Developer install

Clone Keryx instead of installing it, and the service runs your checkout. That adds what an installed copy can't do:

  • Changes to Keryx's own code by phone. Ask on a call, for example "make the call-back name the project", and the task edits the checkout, restarts Keryx onto the change, and calls you back to say whether it came up.
  • Better bug reports. With issue reports turned on in keryx setup, the task reads Keryx's code and logs before it files the issue.
  • The test suite, and branches of your own.

It needs uv, and every command runs as uv run keryx from the checkout:

git clone https://github.com/wak31415/keryx.git && cd keryx
uv sync
uv run keryx setup

To update, pull and then run uv run keryx restart. CONTRIBUTING.md has the rest.

Documentation

Getting help

  1. Run keryx doctor. It checks the whole setup and says what's missing.
  2. Read Troubleshooting on the wiki.
  3. If that doesn't solve it, open an issue.

Report a security problem privately, as SECURITY.md describes, never in a public issue.

Roadmap

v0.3.0 plans to add local models for the voice and the agents. v0.4.0 plans to let you talk to the assistant at a Mac, without a phone. A move to OpenAI's GPT-Live is being considered but isn't scheduled. docs/roadmap.md has the checklist for each.

Contributing and license

Bug reports, corrections to the docs, and code are all welcome. See CONTRIBUTING.md. Keryx is licensed under Apache 2.0.

Metadata

Release files for keryx-voice 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for keryx-voice 0.2.0
File Size Uploaded Provenance Actions
keryx_voice-0.2.0.tar.gz 1.0 MB Without provenance Details for keryx_voice-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for keryx-voice 0.2.0
File Interpreter ABI Platform Actions
keryx_voice-0.2.0-py3-none-any.whl Python 3 none any Details for keryx_voice-0.2.0-py3-none-any.whl

Total release size: 1.5 MB

Release files / keryx_voice-0.2.0.tar.gz

Download URL keryx_voice-0.2.0.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
1b3ad8a5cb9a8d1f94c14655fe463ab4160b9d13045b6ab460cb5ccac2b55e41
BLAKE2b-256 checksum
How to use checksums
d16a2ac96bca94bf76b724b8eed9d857b82d50b2c263ae3faa117c42259949a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / keryx_voice-0.2.0-py3-none-any.whl

Download URL keryx_voice-0.2.0-py3-none-any.whl
Size 472.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8dd34447215dd4738227412f4289d1f2999249e23ea541eca454d8128fe17894
BLAKE2b-256 checksum
How to use checksums
fb3e0d0869a71d3fcef90b6617a745527e169a7ac933d8031019f7847d582a59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for keryx-voice 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page