Session Kit
Session Kit lets your Claude Code sessions mail each other, hear you and answer aloud. One install brings the five family packages and their Claude Code plugins.
Installation
You need macOS, Claude Code, and Homebrew or at
least Apple's Command Line Tools. Homebrew installs the Command Line Tools
for you (prerequisites), and the kit needs two of their tools:
the plugin lines clone with git, and the ears build a Swift helper with
swiftc. Without Homebrew, run xcode-select --install to get the Command
Line Tools alone. If you do not have uv yet, install it with
curl -LsSf https://astral.sh/uv/install.sh | sh, then open a new terminal
(or run source ~/.local/bin/env).
uv tool install --python 3.14 sessionkit
claude plugin marketplace add sessionkit/sessionkit
claude plugin install sessionkit@sessionkit
The first line puts the commands on your PATH. The other two install the kit's plugin and the five family plugins it depends on.
- Keep
--python 3.14. Without it, uv takes the Python it finds: 3.15, where a voice library has no build yet and the install fails, or the Command Line Tools' 3.11. The kit is tested on 3.14. - Upgrade with
uv tool upgrade sessionkit. It keeps the Python the install chose. To reinstall, give the pin again:uv tool install --python 3.14 --reinstall sessionkit. Without it, uv drops the pin from its record, or, with--force, builds the kit again on the Python it finds. - A dialog may ask to install the Command Line Tools. On a Mac without
them, the first
uv tool installopens it. Click Install and let it finish: the plugin lines need the git it brings. - Phone calls are installed, and walked for a session started with
session start <name>. A fresh Mac took a real call and passed. A plainclaudesession does not hear calls you make to it yet. Whether the phone bot signs its mail to your Claude follows your mail carrier: bot mail signing.
Then quit Claude Code and start it again, every window of it, before you run anything else. A plugin installed from the shell loads only when Claude Code starts, so a session that was already open has no plugin commands on its PATH, and no plugin hooks.
The three lines leave the ears without the model they listen with. Fetch it once:
ears install
It downloads the 2.3 MB voice-activity model to
~/.cache/ears/silero_vad.onnx (network, no sudo) and prints done. Without
it the ears cannot hear you, and ears services install, the step that
starts them (hearing and speaking), refuses with
silero MISSING. The Swift helper is built later, when those services start.
-
The mail hooks start off. They tell an agent about new mail between its tool calls. To turn them on, set
"hooks": truein~/.sessionkit/mail/settings/mail.json. On a fresh install the file is not there yet, so make it:mkdir -p ~/.sessionkit/mail/settings echo '{"version": 1, "hooks": true}' > ~/.sessionkit/mail/settings/mail.json
If the file is there, change only that key, because it can hold other settings:
perl -pi -e 's/"hooks": *false/"hooks": true/' ~/.sessionkit/mail/settings/mail.json
Step by step, with every step that needs you marked: the manual install.
Quick start
sessionkit --version
It lists the kit and each family package, with its version:
sessionkit, version 0.3.0
sessionmail 0.3.0
sessiontools 0.3.0
sessionphone 0.3.0
sessionview 0.3.0
sessionvoice 0.3.0
Start Claude with session start claude, never a bare claude: mail to
your agent's box, your phone's included, reaches only a session started as
that agent. sessionkit setup makes the box and the agent first: first
checks.
Then, from your agent inside a Claude Code session:
session list # your live sessions
message send <box> -s "PR ready" -f note.md # mail another agent
mouth say --device default "the build is green" # speak one line
-
Mail works inside a session.
messageandpagerread who is asking from the session. A plain terminal has no session, so they refuse withno seat in the environment ... set an identity(first checks). A send never makes a box: the address must have one already (mail between agents). -
The mouth needs a device.
--device defaultis your Mac's default output;mouth deviceslists the others. -
To hear you, the ears need a speech-to-text server: hearing and speaking.
-
Your agent talks with the kit's mouth and ears. sessionvoice's ears skill sets the default:
With the kit, an agent talks through the kit's own mouth and ears: it speaks with
mouth sayand listens by arming the ears withears-arm. That is the default whenever the user asks it to talk, speak, listen or use voice, even on a host that also has VoiceMode'sconversetool. It usesconverseonly when the user asks for converse by name.
Uninstall
claude plugin marketplace remove sessionkit
uv tool uninstall sessionkit
Removing the marketplace removes its six plugins too, but not the copies they ran from. Those copies, the services and your data have their own steps: uninstall.
Usage
Every command answers --help, and each has a page: components.
The family
Session Kit installs these together:
- sessionmail: mail for coding agents.
message,pagerandmemoryover one maildir. - sessiontools: sessions, status and idle.
session. - sessionvoice: ambient voice.
earshears;mouthspeaks. - sessionphone: phone calls to a session over Delta Chat.
Installed, and walked on a fresh Mac for a session started with
session start <name>. A plainclaudesession does not hear calls you make to it yet. - sessionview: a tmux sidebar of your projects and your agents.
Components
The commands, services and folders the install adds, and where each package logs: components.
Configuration
Each package configures itself: configuration. How the settings files stack: the settings guide.
Logs
Each package keeps its own log: logs. Which one to read for a symptom: troubleshooting.
Development
git clone https://github.com/sessionkit/sessionkit
cd sessionkit
make install # editable: uv tool install -e .
make check # ruff, shellcheck, then the tests
The rules for changing the kit: AGENTS.md.
Status
Alpha, 0.3.0. Tested on macOS 27 on Apple silicon; Linux and Windows are untested. What you may still hit: known gaps.
Licence: AGPL-3.0.
Metadata
Release files for sessionkit 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| sessionkit-0.3.0.tar.gz | 31.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sessionkit-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 62.7 kB
Release files / sessionkit-0.3.0.tar.gz
| Download URL | sessionkit-0.3.0.tar.gz |
|---|---|
| Size | 31.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e90e8e626dc73bc4ba7d12f235ee6b87f57dd85288eb2da6aa08e9028bf0718d
|
|
BLAKE2b-256 checksum How to use checksums |
d9b4ff00f922e97e753938312a7c1aa751c8d3891ca567e0612a810bba872de8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / sessionkit-0.3.0-py3-none-any.whl
| Download URL | sessionkit-0.3.0-py3-none-any.whl |
|---|---|
| Size | 30.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
900a6575c7a12aa735431a47764899bf6f75b2ae5198ccd14aa22af3487b90c3
|
|
BLAKE2b-256 checksum How to use checksums |
3d4c578355307a5c47d454affbeae95c82cc3fdd80e6668222d82db19eb2d143
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for sessionkit 0.3.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.