sessionkit 0.2.1__tar.gz → 0.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,384 @@
1
+ Metadata-Version: 2.4
2
+ Name: sessionkit
3
+ Version: 0.3.1
4
+ Summary: Session Kit gives your Claude Code sessions voice, mail, a phone line and a tmux sidebar, in one install.
5
+ Author: Mike Bailey
6
+ Author-email: Mike Bailey <mike@sessionkit.ai>
7
+ License-Expression: AGPL-3.0-or-later
8
+ License-File: LICENSE
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Requires-Dist: click>=8.1
11
+ Requires-Dist: sessionmail>=0.3.1
12
+ Requires-Dist: sessiontools>=0.3.1
13
+ Requires-Dist: sessionphone[media]>=0.3.0
14
+ Requires-Dist: sessionview>=0.3.0
15
+ Requires-Dist: sessionvoice[capture]>=0.3.0
16
+ Requires-Python: >=3.11, <3.15
17
+ Project-URL: Homepage, https://github.com/sessionkit/sessionkit
18
+ Project-URL: Repository, https://github.com/sessionkit/sessionkit
19
+ Description-Content-Type: text/markdown
20
+
21
+ # Session Kit
22
+
23
+ Session Kit lets your Claude Code sessions mail each other, hear you and
24
+ answer aloud. One install brings the five family packages and their Claude
25
+ Code plugins.
26
+
27
+ ## Installation
28
+
29
+ You need:
30
+
31
+ - macOS.
32
+ - [Claude Code][claude-code].
33
+ - Have Claude Code: nothing to run.
34
+ - No Claude Code: install it with Anthropic's installer.
35
+
36
+ ```bash
37
+ curl -fsSL https://claude.ai/install.sh | bash
38
+ ```
39
+
40
+ - Its "Setup notes" say `~/.local/bin is not in your PATH`? The installer
41
+ does not change your PATH itself. Add the folder with Anthropic's two
42
+ lines for zsh, the Mac's shell:
43
+
44
+ ```bash
45
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
46
+ source ~/.zshrc
47
+ ```
48
+
49
+ - Claude Code asks you to sign in the first time you start it.
50
+ - [Homebrew][brew] or at least Apple's Command Line Tools. Homebrew
51
+ installs the Command Line Tools for you ([prerequisites][prereqs]), and
52
+ the kit needs two of their tools: the plugin lines clone with git, and the
53
+ ears build a Swift helper with `swiftc`.
54
+ - Have Homebrew: nothing to run. It installed the Command Line Tools.
55
+ - No Homebrew: get the Command Line Tools alone.
56
+
57
+ ```bash
58
+ xcode-select --install
59
+ ```
60
+
61
+ - uv.
62
+ - Have uv: nothing to run.
63
+ - No uv: install it.
64
+
65
+ ```bash
66
+ curl -LsSf https://astral.sh/uv/install.sh | sh
67
+ ```
68
+
69
+ - Then open a new terminal. Until you do, `uv` is not on your PATH. Or
70
+ run:
71
+
72
+ ```bash
73
+ source ~/.local/bin/env
74
+ ```
75
+
76
+ - For a call on a Mac: [Homebrew][brew], then ffmpeg from it. A call needs
77
+ ffmpeg, and Homebrew is how a Mac gets it. The Command Line Tools alone
78
+ are not enough for a call.
79
+ - Have Homebrew: go on to ffmpeg.
80
+ - No Homebrew: install it with its own installer, from [brew.sh][brew].
81
+ - Then install ffmpeg:
82
+
83
+ ```bash
84
+ brew install ffmpeg
85
+ ```
86
+
87
+ - Then the speech server, then link the phone: the phone bullets below.
88
+ - A call without Homebrew is the workaround case. This guide does not
89
+ cover it.
90
+
91
+ Then install the kit:
92
+
93
+ ```bash
94
+ uv tool install --python 3.14 sessionkit
95
+ claude plugin marketplace add sessionkit/sessionkit
96
+ claude plugin install sessionkit@sessionkit
97
+ ```
98
+
99
+ The first line puts the commands on your PATH. The other two install the
100
+ kit's plugin and the five family plugins it depends on.
101
+
102
+ - **Keep `--python 3.14`.** Without it, uv takes the Python it finds: 3.15,
103
+ where a voice library has no build yet and the install fails, or the
104
+ Command Line Tools' 3.11. The kit is tested on 3.14.
105
+ - **Upgrade with `uv tool upgrade sessionkit`.** It keeps the Python the
106
+ install chose.
107
+ - To reinstall, give the pin again:
108
+
109
+ ```bash
110
+ uv tool install --python 3.14 --reinstall sessionkit
111
+ ```
112
+
113
+ Without it, uv drops the pin from its record, or, with `--force`, builds
114
+ the kit again on the Python it finds.
115
+ - **A dialog may ask to install the Command Line Tools.** On a Mac without
116
+ them, the first `uv tool install` opens it. Click Install and let it
117
+ finish: the plugin lines need the git it brings. The dialog can open
118
+ behind the Terminal window: look for it in the Dock or with Cmd-Tab.
119
+ - **Phone calls are installed, and walked for a session started with
120
+ `session start <name>`.** A fresh Mac took a real call and passed. A plain
121
+ `claude` session does not hear calls you make to it yet. Whether the phone
122
+ bot signs its mail to your Claude follows your mail carrier:
123
+ [bot mail signing][phone-signing].
124
+ - **The speech server comes before the phone.** A call hears you through
125
+ it, so it is installed before you link your phone. Linking is
126
+ `sessionphone setup`, in [sessionphone][pkg-phone]'s docs.
127
+ - No phone: nothing to run now. [Hearing and speaking][hearing]
128
+ installs the speech server with the rest of the voice.
129
+ - A phone: first Homebrew, then ffmpeg, as the call item under "You
130
+ need" says.
131
+
132
+ ```bash
133
+ brew install ffmpeg
134
+ ```
135
+
136
+ - Then install the speech server. It builds the server and fetches its
137
+ weights, about 2.9 GB.
138
+
139
+ ```bash
140
+ ears services install --only speech
141
+ ```
142
+
143
+ - Then link the phone.
144
+
145
+ - **Then quit Claude Code and start it again**, every window of it, before
146
+ you run anything else.
147
+
148
+ A plugin installed from the shell loads only when Claude Code starts, so a
149
+ session that was already open has no plugin commands on its PATH, and no
150
+ plugin hooks.
151
+
152
+ The three lines leave the ears without the model they listen with. Fetch it
153
+ once:
154
+
155
+ ```bash
156
+ ears install
157
+ ```
158
+
159
+ It downloads the 2.3 MB voice-activity model from GitHub (one pinned
160
+ release of Silero VAD, checked against its SHA-256) to
161
+ `~/.cache/ears/silero_vad.onnx`, with no sudo, and prints `done`. Without
162
+ it the ears cannot hear you, and `ears services install`, the step that
163
+ starts them ([hearing and speaking][hearing]), refuses with
164
+ `silero MISSING`. The Swift helper is built later, when those services start.
165
+
166
+ - **The mail hooks start off.** They tell an agent about new mail between
167
+ its tool calls. To turn them on, set `"hooks": true` in
168
+ `~/.sessionkit/mail/settings/mail.json`. The plugin writes that file,
169
+ with the hooks off, the first time a Claude Code session runs a tool,
170
+ and it holds other settings too, so change only that key. Never write
171
+ the file over: that deletes the other keys. This works whether the file
172
+ is there yet or not, and whether it has a `hooks` key or not:
173
+
174
+ ```bash
175
+ f=~/.sessionkit/mail/settings/mail.json
176
+ if [ -f "$f" ]; then
177
+ perl -0777 -pi -e '
178
+ if (/"hooks"\s*:/) { s/"hooks"\s*:\s*false/"hooks": true/ }
179
+ elsif (/\A\s*\{\s*\}\s*\z/) { s/\{\s*\}/{"hooks": true}/ }
180
+ else { s/\{(\s*)/"{$1" . q("hooks": true,) . ($1 || " ")/e }
181
+ ' "$f"
182
+ else
183
+ mkdir -p ~/.sessionkit/mail/settings
184
+ echo '{"version": 1, "hooks": true, "sendmail": "drop"}' > "$f"
185
+ fi
186
+ ```
187
+
188
+ A `"hooks": false` becomes `true`. A file with no `hooks` key gets
189
+ `"hooks": true` as its first key, and its other keys stay as they were.
190
+ If the file is not there yet, this writes what the plugin would have
191
+ written, with the hooks on. The plugin never replaces a file that is
192
+ already there.
193
+
194
+ Step by step, with every step that needs you marked: [the manual
195
+ install][install].
196
+
197
+ ## Quick start
198
+
199
+ ```bash
200
+ sessionkit --version
201
+ ```
202
+
203
+ It lists the kit and each family package, with its version:
204
+
205
+ ```text
206
+ sessionkit, version 0.3.0
207
+ sessionmail 0.3.0
208
+ sessiontools 0.3.0
209
+ sessionphone 0.3.0
210
+ sessionview 0.3.0
211
+ sessionvoice 0.3.0
212
+ ```
213
+
214
+ Start Claude in a project folder, not in your home folder, where a new
215
+ Terminal opens. Started in the home folder, Claude Code asks macOS for
216
+ access to folders such as Desktop, Downloads, Photos and Media Library.
217
+ Make a folder, go into it, and start Claude there:
218
+
219
+ ```bash
220
+ mkdir -p ~/work && cd ~/work
221
+ session start
222
+ ```
223
+
224
+ - **The first session on this Mac is `claude`, and it hears Delta.** Your
225
+ phone's Delta messages and calls go to the box `claude`, and only the
226
+ session that holds `claude` hears them. It says so as it starts:
227
+
228
+ ```text
229
+ session start: this session is claude, the default seat on this host (box claude)
230
+ ```
231
+
232
+ - **A second session starts plain.** Start another the same way while the
233
+ first one runs, and it is a plain Claude Code session. It does not hear
234
+ Delta, and its one line names the session that holds `claude`:
235
+
236
+ ```text
237
+ session start: starting plain: the default seat claude is held by session 6161d8f8-d49f-4826-9f80-095bd2e6aaed (pid 6993, live 2s), so this session will NOT hear Delta messages or calls; that one does
238
+ ```
239
+
240
+ - **Never a bare `claude`.** Mail to your agent's box, your phone's
241
+ included, reaches only a session started as that agent.
242
+ - **`sessionkit setup` makes the box `claude` first:** [first
243
+ checks][checks]. Without the box, the first session starts plain too,
244
+ and its line names the repair:
245
+
246
+ ```text
247
+ session start: starting plain: box claude is missing, so this session will NOT hear Delta messages or calls; repair: message setup --box claude
248
+ ```
249
+
250
+ Then, from your agent inside a Claude Code session, list your live
251
+ sessions:
252
+
253
+ ```bash
254
+ session list
255
+ ```
256
+
257
+ Mail another agent, its box name in place of TO:
258
+
259
+ ```bash
260
+ message send TO -s "PR ready" -f note.md
261
+ ```
262
+
263
+ Speak one line:
264
+
265
+ ```bash
266
+ mouth say "the build is green"
267
+ ```
268
+
269
+ - **Mail works inside a session.** `message` and `pager` read who is asking
270
+ from the session. A plain terminal has no session, so they refuse with
271
+ `no seat in the environment ... set an identity` ([first checks][checks]).
272
+ A send never makes a box: the address must have one already ([mail
273
+ between agents][mail]).
274
+ - **The mouth plays on your Mac's default output** when no device is set.
275
+ `mouth devices` lists the others, and `--device DEVICE` picks one.
276
+ - **To hear you**, the ears need a speech-to-text server: [hearing and
277
+ speaking][hearing].
278
+ - **Your agent talks with the kit's mouth and ears.** sessionvoice's ears
279
+ skill sets the default:
280
+
281
+ > **With the kit, an agent talks through the kit's own mouth and ears: it
282
+ > speaks with `mouth say` and listens by arming the ears with `ears-arm`. That
283
+ > is the default whenever the user asks it to talk, speak, listen or use voice,
284
+ > even on a host that also has VoiceMode's `converse` tool. It uses `converse`
285
+ > only when the user asks for converse by name.**
286
+
287
+ ## Requirements
288
+
289
+ - [x] macOS (tested on macOS 27, Apple silicon)
290
+ - [ ] Linux
291
+ - [ ] WSL
292
+ - [ ] Windows
293
+
294
+ What the kit depends on, what needs each one, and how to upgrade it:
295
+ [dependencies][dependencies].
296
+
297
+ ## Uninstall
298
+
299
+ ```bash
300
+ claude plugin marketplace remove sessionkit
301
+ uv tool uninstall sessionkit
302
+ ```
303
+
304
+ Removing the marketplace removes its six plugins too, but not the copies they
305
+ ran from. Those copies, the services and your data have their own steps:
306
+ [uninstall][uninstall].
307
+
308
+ ## Usage
309
+
310
+ Every command answers `--help`, and each has a page: [components][components].
311
+
312
+ ## The family
313
+
314
+ Session Kit installs these together:
315
+
316
+ - [sessionmail][pkg-mail]: mail for coding agents. `message`, `pager` and
317
+ `memory` over one maildir.
318
+ - [sessiontools][pkg-tools]: sessions, status and idle. `session`.
319
+ - [sessionvoice][pkg-voice]: ambient voice. `ears` hears; `mouth` speaks.
320
+ - [sessionphone][pkg-phone]: phone calls to a session over Delta Chat.
321
+ Installed, and walked on a fresh Mac for a session started with
322
+ `session start <name>`. A plain `claude` session does not hear calls you
323
+ make to it yet.
324
+ - [sessionview][pkg-view]: a tmux sidebar of your projects and your agents.
325
+
326
+ ## Components
327
+
328
+ The commands, services and folders the install adds, and where each
329
+ package logs: [components][components].
330
+
331
+ ## Configuration
332
+
333
+ Each package configures itself: [configuration][configuration]. How the
334
+ settings files stack: [the settings guide][settings].
335
+
336
+ ## Logs
337
+
338
+ Each package keeps its own log: [logs][logs]. Which one to read for a
339
+ symptom: [troubleshooting][troubleshooting].
340
+
341
+ ## Development
342
+
343
+ ```bash
344
+ git clone https://github.com/sessionkit/sessionkit
345
+ cd sessionkit
346
+ make install
347
+ make check
348
+ ```
349
+
350
+ `make install` installs the kit editable, with uv. `make check` runs ruff,
351
+ shellcheck, then the tests.
352
+
353
+ The rules for changing the kit: [AGENTS.md][agents].
354
+
355
+ ## Status
356
+
357
+ Alpha, 0.3.1. Tested on macOS 27 on Apple silicon; Linux and Windows are
358
+ untested. What you may still hit: [known gaps][gaps].
359
+
360
+ Licence: [AGPL-3.0][licence].
361
+
362
+ [claude-code]: https://code.claude.com/docs/en/overview
363
+ [brew]: https://brew.sh
364
+ [install]: INSTALL.md
365
+ [prereqs]: INSTALL.md#1-prerequisites-human
366
+ [checks]: INSTALL.md#4-first-checks
367
+ [hearing]: INSTALL.md#5-hearing-and-speaking-it-hears-me-and-speaks
368
+ [mail]: INSTALL.md#mail-between-agents
369
+ [uninstall]: INSTALL.md#8-uninstall
370
+ [gaps]: INSTALL.md#7-known-gaps-you-will-hit
371
+ [components]: docs/components.md
372
+ [dependencies]: docs/dependencies.md
373
+ [logs]: docs/components.md#logs
374
+ [configuration]: docs/configuration.md
375
+ [settings]: docs/settings.md
376
+ [troubleshooting]: docs/troubleshooting.md
377
+ [agents]: AGENTS.md
378
+ [licence]: LICENSE
379
+ [pkg-mail]: https://github.com/sessionkit/sessionmail
380
+ [pkg-tools]: https://github.com/sessionkit/sessiontools
381
+ [pkg-voice]: https://github.com/sessionkit/sessionvoice
382
+ [pkg-phone]: https://github.com/sessionkit/sessionphone
383
+ [phone-signing]: https://github.com/sessionkit/sessionphone/blob/HEAD/docs/bot-mail-signing.md
384
+ [pkg-view]: https://github.com/sessionkit/sessionview