sessionkit 0.3.1__tar.gz → 0.3.3__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.
- sessionkit-0.3.1/README.md → sessionkit-0.3.3/PKG-INFO +128 -44
- sessionkit-0.3.1/PKG-INFO → sessionkit-0.3.3/README.md +107 -64
- {sessionkit-0.3.1 → sessionkit-0.3.3}/pyproject.toml +12 -7
- {sessionkit-0.3.1 → sessionkit-0.3.3}/pyproject.toml.orig +28 -11
- sessionkit-0.3.3/src/sessionkit/cli.py +468 -0
- sessionkit-0.3.3/src/sessionkit/docs/what-listens.md +66 -0
- sessionkit-0.3.3/src/sessionkit/doctor.py +321 -0
- sessionkit-0.3.3/src/sessionkit/install.sh +1256 -0
- sessionkit-0.3.3/src/sessionkit/launchd.py +228 -0
- sessionkit-0.3.3/src/sessionkit/service.schema.json +31 -0
- sessionkit-0.3.3/src/sessionkit/services.py +674 -0
- {sessionkit-0.3.1 → sessionkit-0.3.3}/src/sessionkit/setup.py +115 -27
- sessionkit-0.3.1/src/sessionkit/cli.py +0 -156
- {sessionkit-0.3.1 → sessionkit-0.3.3}/LICENSE +0 -0
- {sessionkit-0.3.1 → sessionkit-0.3.3}/src/sessionkit/__init__.py +0 -0
- {sessionkit-0.3.1 → sessionkit-0.3.3}/src/sessionkit/py.typed +0 -0
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sessionkit
|
|
3
|
+
Version: 0.3.3
|
|
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.3
|
|
12
|
+
Requires-Dist: sessiontools>=0.3.3
|
|
13
|
+
Requires-Dist: sessionphone[media]>=0.3.3
|
|
14
|
+
Requires-Dist: sessionview>=0.3.3
|
|
15
|
+
Requires-Dist: sessionvoice[capture]>=0.3.3
|
|
16
|
+
Requires-Dist: settled[kit]>=0.1.0
|
|
17
|
+
Requires-Python: >=3.11, <3.15
|
|
18
|
+
Project-URL: Homepage, https://github.com/sessionkit/sessionkit
|
|
19
|
+
Project-URL: Repository, https://github.com/sessionkit/sessionkit
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
1
22
|
# Session Kit
|
|
2
23
|
|
|
3
24
|
Session Kit lets your Claude Code sessions mail each other, hear you and
|
|
@@ -46,11 +67,10 @@ You need:
|
|
|
46
67
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
47
68
|
```
|
|
48
69
|
|
|
49
|
-
- Then open a new terminal
|
|
50
|
-
run:
|
|
70
|
+
- Then open a new terminal, so `uv` is on your PATH. Or run:
|
|
51
71
|
|
|
52
72
|
```bash
|
|
53
|
-
source ~/.
|
|
73
|
+
source ~/.zshrc
|
|
54
74
|
```
|
|
55
75
|
|
|
56
76
|
- For a call on a Mac: [Homebrew][brew], then ffmpeg from it. A call needs
|
|
@@ -64,6 +84,9 @@ You need:
|
|
|
64
84
|
brew install ffmpeg
|
|
65
85
|
```
|
|
66
86
|
|
|
87
|
+
- Homebrew lists what ffmpeg needs, then asks
|
|
88
|
+
`Do you want to proceed with the installation? [y/n]`. Press `y`. It
|
|
89
|
+
goes on at once, with no Return.
|
|
67
90
|
- Then the speech server, then link the phone: the phone bullets below.
|
|
68
91
|
- A call without Homebrew is the workaround case. This guide does not
|
|
69
92
|
cover it.
|
|
@@ -82,8 +105,13 @@ kit's plugin and the five family plugins it depends on.
|
|
|
82
105
|
- **Keep `--python 3.14`.** Without it, uv takes the Python it finds: 3.15,
|
|
83
106
|
where a voice library has no build yet and the install fails, or the
|
|
84
107
|
Command Line Tools' 3.11. The kit is tested on 3.14.
|
|
85
|
-
-
|
|
86
|
-
|
|
108
|
+
- To upgrade:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
uv tool upgrade sessionkit
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
It keeps the Python the install chose.
|
|
87
115
|
- To reinstall, give the pin again:
|
|
88
116
|
|
|
89
117
|
```bash
|
|
@@ -102,8 +130,7 @@ kit's plugin and the five family plugins it depends on.
|
|
|
102
130
|
bot signs its mail to your Claude follows your mail carrier:
|
|
103
131
|
[bot mail signing][phone-signing].
|
|
104
132
|
- **The speech server comes before the phone.** A call hears you through
|
|
105
|
-
it, so it is installed before you link your phone.
|
|
106
|
-
`sessionphone setup`, in [sessionphone][pkg-phone]'s docs.
|
|
133
|
+
it, so it is installed before you link your phone.
|
|
107
134
|
- No phone: nothing to run now. [Hearing and speaking][hearing]
|
|
108
135
|
installs the speech server with the rest of the voice.
|
|
109
136
|
- A phone: first Homebrew, then ffmpeg, as the call item under "You
|
|
@@ -113,6 +140,7 @@ kit's plugin and the five family plugins it depends on.
|
|
|
113
140
|
brew install ffmpeg
|
|
114
141
|
```
|
|
115
142
|
|
|
143
|
+
- At Homebrew's `[y/n]`, press `y`.
|
|
116
144
|
- Then install the speech server. It builds the server and fetches its
|
|
117
145
|
weights, about 2.9 GB.
|
|
118
146
|
|
|
@@ -120,7 +148,22 @@ kit's plugin and the five family plugins it depends on.
|
|
|
120
148
|
ears services install --only speech
|
|
121
149
|
```
|
|
122
150
|
|
|
123
|
-
- Then link the phone.
|
|
151
|
+
- Then link the phone. This makes its account on a public relay and
|
|
152
|
+
prints the invite link. The name people see in their chat list goes in
|
|
153
|
+
place of NAME:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
sessionphone setup --name NAME
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
A name with a space in it needs quotes, or the shell splits it in two
|
|
160
|
+
and setup refuses the second word:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
sessionphone setup --name "Ada Lovelace"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
- The rest of linking is in [sessionphone][pkg-phone]'s docs.
|
|
124
167
|
|
|
125
168
|
- **Then quit Claude Code and start it again**, every window of it, before
|
|
126
169
|
you run anything else.
|
|
@@ -129,8 +172,19 @@ A plugin installed from the shell loads only when Claude Code starts, so a
|
|
|
129
172
|
session that was already open has no plugin commands on its PATH, and no
|
|
130
173
|
plugin hooks.
|
|
131
174
|
|
|
132
|
-
|
|
133
|
-
|
|
175
|
+
Then set up mail. This makes the box `claude`, which your first session
|
|
176
|
+
needs to hear mail and calls:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
sessionkit setup
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
- **On a fresh Mac it exits 4, and that is expected.** It leaves two
|
|
183
|
+
notmuch steps for later: [the manual install][setup] shows its last
|
|
184
|
+
lines.
|
|
185
|
+
|
|
186
|
+
The three install lines leave the ears without the model they listen
|
|
187
|
+
with. Fetch it once:
|
|
134
188
|
|
|
135
189
|
```bash
|
|
136
190
|
ears install
|
|
@@ -144,51 +198,68 @@ starts them ([hearing and speaking][hearing]), refuses with
|
|
|
144
198
|
`silero MISSING`. The Swift helper is built later, when those services start.
|
|
145
199
|
|
|
146
200
|
- **The mail hooks start off.** They tell an agent about new mail between
|
|
147
|
-
its tool calls.
|
|
148
|
-
`~/.sessionkit/mail/settings/mail.json`. The plugin writes that file,
|
|
149
|
-
with the hooks off, the first time a Claude Code session runs a tool,
|
|
150
|
-
and it holds other settings too, so change only that key. Never write
|
|
151
|
-
the file over: that deletes the other keys. This works whether the file
|
|
152
|
-
is there yet or not, and whether it has a `hooks` key or not:
|
|
201
|
+
its tool calls. Turn them on with sessionmail's own command:
|
|
153
202
|
|
|
154
203
|
```bash
|
|
155
|
-
|
|
156
|
-
if [ -f "$f" ]; then
|
|
157
|
-
perl -0777 -pi -e '
|
|
158
|
-
if (/"hooks"\s*:/) { s/"hooks"\s*:\s*false/"hooks": true/ }
|
|
159
|
-
elsif (/\A\s*\{\s*\}\s*\z/) { s/\{\s*\}/{"hooks": true}/ }
|
|
160
|
-
else { s/\{(\s*)/"{$1" . q("hooks": true,) . ($1 || " ")/e }
|
|
161
|
-
' "$f"
|
|
162
|
-
else
|
|
163
|
-
mkdir -p ~/.sessionkit/mail/settings
|
|
164
|
-
echo '{"version": 1, "hooks": true, "sendmail": "drop"}' > "$f"
|
|
165
|
-
fi
|
|
204
|
+
pager settings hooks on
|
|
166
205
|
```
|
|
167
206
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
207
|
+
- It sets only `"hooks": true` in
|
|
208
|
+
`~/.sessionkit/mail/settings/mail.json`, and keeps every other key in
|
|
209
|
+
that file. With no file yet, it makes one, with the hooks on.
|
|
210
|
+
- Each session's next hook reads it. A second run writes nothing.
|
|
211
|
+
- To turn them off again:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
pager settings hooks off
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
- To see which they are, run it bare. It changes nothing, and exits 0
|
|
218
|
+
for on, 3 for off:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
pager settings hooks
|
|
222
|
+
```
|
|
173
223
|
|
|
174
224
|
Step by step, with every step that needs you marked: [the manual
|
|
175
225
|
install][install].
|
|
176
226
|
|
|
227
|
+
To see what this Mac is still missing, run the kit's check. It installs
|
|
228
|
+
nothing. It prints one line for each thing the kit needs, and under each
|
|
229
|
+
missing one, the command that adds it:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
sessionkit doctor
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
It exits 0 when nothing the kit needs is missing, and 1 when something is.
|
|
236
|
+
The phone bot and the session key are shown, but they never fail it.
|
|
237
|
+
|
|
238
|
+
- No kit yet, or `sessionkit` will not start? The installer runs the same
|
|
239
|
+
check. Its address is not live yet. From a clone of this repository,
|
|
240
|
+
run `bash install.sh --check`. Once the address is live:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
curl -fsSL https://sessionkit.ai/install.sh | bash -s -- --check
|
|
244
|
+
```
|
|
245
|
+
|
|
177
246
|
## Quick start
|
|
178
247
|
|
|
179
248
|
```bash
|
|
180
249
|
sessionkit --version
|
|
181
250
|
```
|
|
182
251
|
|
|
183
|
-
It lists the kit
|
|
252
|
+
It lists the kit, each family package and settled, the Settings app, each
|
|
253
|
+
with its version. Each `X.Y.Z` is the version you installed:
|
|
184
254
|
|
|
185
255
|
```text
|
|
186
|
-
sessionkit, version
|
|
187
|
-
sessionmail
|
|
188
|
-
sessiontools
|
|
189
|
-
sessionphone
|
|
190
|
-
sessionview
|
|
191
|
-
sessionvoice
|
|
256
|
+
sessionkit, version X.Y.Z
|
|
257
|
+
sessionmail X.Y.Z
|
|
258
|
+
sessiontools X.Y.Z
|
|
259
|
+
sessionphone X.Y.Z
|
|
260
|
+
sessionview X.Y.Z
|
|
261
|
+
sessionvoice X.Y.Z
|
|
262
|
+
settled X.Y.Z
|
|
192
263
|
```
|
|
193
264
|
|
|
194
265
|
Start Claude in a project folder, not in your home folder, where a new
|
|
@@ -219,9 +290,9 @@ session start
|
|
|
219
290
|
|
|
220
291
|
- **Never a bare `claude`.** Mail to your agent's box, your phone's
|
|
221
292
|
included, reaches only a session started as that agent.
|
|
222
|
-
-
|
|
223
|
-
|
|
224
|
-
|
|
293
|
+
- **Without the box `claude`, the first session starts plain too.** The
|
|
294
|
+
mail setup under Installation makes the box ([first checks][checks]).
|
|
295
|
+
The line names the repair:
|
|
225
296
|
|
|
226
297
|
```text
|
|
227
298
|
session start: starting plain: box claude is missing, so this session will NOT hear Delta messages or calls; repair: message setup --box claude
|
|
@@ -255,6 +326,11 @@ mouth say "the build is green"
|
|
|
255
326
|
`mouth devices` lists the others, and `--device DEVICE` picks one.
|
|
256
327
|
- **To hear you**, the ears need a speech-to-text server: [hearing and
|
|
257
328
|
speaking][hearing].
|
|
329
|
+
- **See the conversation in a browser.** Talk shows what the ears heard,
|
|
330
|
+
what the mouth said, and which seats heard it. Start it with
|
|
331
|
+
`ears services install --only talk`, then run `talk pair` in a terminal
|
|
332
|
+
on the same Mac and open the link it prints. Each browser pairs once
|
|
333
|
+
([Talk][talk]).
|
|
258
334
|
- **Your agent talks with the kit's mouth and ears.** sessionvoice's ears
|
|
259
335
|
skill sets the default:
|
|
260
336
|
|
|
@@ -302,11 +378,16 @@ Session Kit installs these together:
|
|
|
302
378
|
`session start <name>`. A plain `claude` session does not hear calls you
|
|
303
379
|
make to it yet.
|
|
304
380
|
- [sessionview][pkg-view]: a tmux sidebar of your projects and your agents.
|
|
381
|
+
`sessionview` (said "session view").
|
|
382
|
+
|
|
383
|
+
It also installs settled, the Settings app: `settled`. It is not one of the
|
|
384
|
+
five: it has its own version, and no Claude Code plugin.
|
|
305
385
|
|
|
306
386
|
## Components
|
|
307
387
|
|
|
308
388
|
The commands, services and folders the install adds, and where each
|
|
309
|
-
package logs: [components][components].
|
|
389
|
+
package logs: [components][components]. To see the services and restart
|
|
390
|
+
one: [sessionkit service][service].
|
|
310
391
|
|
|
311
392
|
## Configuration
|
|
312
393
|
|
|
@@ -334,7 +415,7 @@ The rules for changing the kit: [AGENTS.md][agents].
|
|
|
334
415
|
|
|
335
416
|
## Status
|
|
336
417
|
|
|
337
|
-
Alpha, 0.3.
|
|
418
|
+
Alpha, 0.3.3. Tested on macOS 27 on Apple silicon; Linux and Windows are
|
|
338
419
|
untested. What you may still hit: [known gaps][gaps].
|
|
339
420
|
|
|
340
421
|
Licence: [AGPL-3.0][licence].
|
|
@@ -343,16 +424,19 @@ Licence: [AGPL-3.0][licence].
|
|
|
343
424
|
[brew]: https://brew.sh
|
|
344
425
|
[install]: INSTALL.md
|
|
345
426
|
[prereqs]: INSTALL.md#1-prerequisites-human
|
|
427
|
+
[setup]: INSTALL.md#2-install-the-kit
|
|
346
428
|
[checks]: INSTALL.md#4-first-checks
|
|
347
429
|
[hearing]: INSTALL.md#5-hearing-and-speaking-it-hears-me-and-speaks
|
|
348
430
|
[mail]: INSTALL.md#mail-between-agents
|
|
349
431
|
[uninstall]: INSTALL.md#8-uninstall
|
|
350
432
|
[gaps]: INSTALL.md#7-known-gaps-you-will-hit
|
|
351
433
|
[components]: docs/components.md
|
|
434
|
+
[service]: docs/service.md
|
|
352
435
|
[dependencies]: docs/dependencies.md
|
|
353
436
|
[logs]: docs/components.md#logs
|
|
354
437
|
[configuration]: docs/configuration.md
|
|
355
438
|
[settings]: docs/settings.md
|
|
439
|
+
[talk]: docs/talk.md
|
|
356
440
|
[troubleshooting]: docs/troubleshooting.md
|
|
357
441
|
[agents]: AGENTS.md
|
|
358
442
|
[licence]: LICENSE
|
|
@@ -1,23 +1,3 @@
|
|
|
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
1
|
# Session Kit
|
|
22
2
|
|
|
23
3
|
Session Kit lets your Claude Code sessions mail each other, hear you and
|
|
@@ -66,11 +46,10 @@ You need:
|
|
|
66
46
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
67
47
|
```
|
|
68
48
|
|
|
69
|
-
- Then open a new terminal
|
|
70
|
-
run:
|
|
49
|
+
- Then open a new terminal, so `uv` is on your PATH. Or run:
|
|
71
50
|
|
|
72
51
|
```bash
|
|
73
|
-
source ~/.
|
|
52
|
+
source ~/.zshrc
|
|
74
53
|
```
|
|
75
54
|
|
|
76
55
|
- For a call on a Mac: [Homebrew][brew], then ffmpeg from it. A call needs
|
|
@@ -84,6 +63,9 @@ You need:
|
|
|
84
63
|
brew install ffmpeg
|
|
85
64
|
```
|
|
86
65
|
|
|
66
|
+
- Homebrew lists what ffmpeg needs, then asks
|
|
67
|
+
`Do you want to proceed with the installation? [y/n]`. Press `y`. It
|
|
68
|
+
goes on at once, with no Return.
|
|
87
69
|
- Then the speech server, then link the phone: the phone bullets below.
|
|
88
70
|
- A call without Homebrew is the workaround case. This guide does not
|
|
89
71
|
cover it.
|
|
@@ -102,8 +84,13 @@ kit's plugin and the five family plugins it depends on.
|
|
|
102
84
|
- **Keep `--python 3.14`.** Without it, uv takes the Python it finds: 3.15,
|
|
103
85
|
where a voice library has no build yet and the install fails, or the
|
|
104
86
|
Command Line Tools' 3.11. The kit is tested on 3.14.
|
|
105
|
-
-
|
|
106
|
-
|
|
87
|
+
- To upgrade:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
uv tool upgrade sessionkit
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
It keeps the Python the install chose.
|
|
107
94
|
- To reinstall, give the pin again:
|
|
108
95
|
|
|
109
96
|
```bash
|
|
@@ -122,8 +109,7 @@ kit's plugin and the five family plugins it depends on.
|
|
|
122
109
|
bot signs its mail to your Claude follows your mail carrier:
|
|
123
110
|
[bot mail signing][phone-signing].
|
|
124
111
|
- **The speech server comes before the phone.** A call hears you through
|
|
125
|
-
it, so it is installed before you link your phone.
|
|
126
|
-
`sessionphone setup`, in [sessionphone][pkg-phone]'s docs.
|
|
112
|
+
it, so it is installed before you link your phone.
|
|
127
113
|
- No phone: nothing to run now. [Hearing and speaking][hearing]
|
|
128
114
|
installs the speech server with the rest of the voice.
|
|
129
115
|
- A phone: first Homebrew, then ffmpeg, as the call item under "You
|
|
@@ -133,6 +119,7 @@ kit's plugin and the five family plugins it depends on.
|
|
|
133
119
|
brew install ffmpeg
|
|
134
120
|
```
|
|
135
121
|
|
|
122
|
+
- At Homebrew's `[y/n]`, press `y`.
|
|
136
123
|
- Then install the speech server. It builds the server and fetches its
|
|
137
124
|
weights, about 2.9 GB.
|
|
138
125
|
|
|
@@ -140,7 +127,22 @@ kit's plugin and the five family plugins it depends on.
|
|
|
140
127
|
ears services install --only speech
|
|
141
128
|
```
|
|
142
129
|
|
|
143
|
-
- Then link the phone.
|
|
130
|
+
- Then link the phone. This makes its account on a public relay and
|
|
131
|
+
prints the invite link. The name people see in their chat list goes in
|
|
132
|
+
place of NAME:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
sessionphone setup --name NAME
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
A name with a space in it needs quotes, or the shell splits it in two
|
|
139
|
+
and setup refuses the second word:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
sessionphone setup --name "Ada Lovelace"
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
- The rest of linking is in [sessionphone][pkg-phone]'s docs.
|
|
144
146
|
|
|
145
147
|
- **Then quit Claude Code and start it again**, every window of it, before
|
|
146
148
|
you run anything else.
|
|
@@ -149,8 +151,19 @@ A plugin installed from the shell loads only when Claude Code starts, so a
|
|
|
149
151
|
session that was already open has no plugin commands on its PATH, and no
|
|
150
152
|
plugin hooks.
|
|
151
153
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
+
Then set up mail. This makes the box `claude`, which your first session
|
|
155
|
+
needs to hear mail and calls:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
sessionkit setup
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
- **On a fresh Mac it exits 4, and that is expected.** It leaves two
|
|
162
|
+
notmuch steps for later: [the manual install][setup] shows its last
|
|
163
|
+
lines.
|
|
164
|
+
|
|
165
|
+
The three install lines leave the ears without the model they listen
|
|
166
|
+
with. Fetch it once:
|
|
154
167
|
|
|
155
168
|
```bash
|
|
156
169
|
ears install
|
|
@@ -164,51 +177,68 @@ starts them ([hearing and speaking][hearing]), refuses with
|
|
|
164
177
|
`silero MISSING`. The Swift helper is built later, when those services start.
|
|
165
178
|
|
|
166
179
|
- **The mail hooks start off.** They tell an agent about new mail between
|
|
167
|
-
its tool calls.
|
|
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:
|
|
180
|
+
its tool calls. Turn them on with sessionmail's own command:
|
|
173
181
|
|
|
174
182
|
```bash
|
|
175
|
-
|
|
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
|
|
183
|
+
pager settings hooks on
|
|
186
184
|
```
|
|
187
185
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
186
|
+
- It sets only `"hooks": true` in
|
|
187
|
+
`~/.sessionkit/mail/settings/mail.json`, and keeps every other key in
|
|
188
|
+
that file. With no file yet, it makes one, with the hooks on.
|
|
189
|
+
- Each session's next hook reads it. A second run writes nothing.
|
|
190
|
+
- To turn them off again:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
pager settings hooks off
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
- To see which they are, run it bare. It changes nothing, and exits 0
|
|
197
|
+
for on, 3 for off:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
pager settings hooks
|
|
201
|
+
```
|
|
193
202
|
|
|
194
203
|
Step by step, with every step that needs you marked: [the manual
|
|
195
204
|
install][install].
|
|
196
205
|
|
|
206
|
+
To see what this Mac is still missing, run the kit's check. It installs
|
|
207
|
+
nothing. It prints one line for each thing the kit needs, and under each
|
|
208
|
+
missing one, the command that adds it:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
sessionkit doctor
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
It exits 0 when nothing the kit needs is missing, and 1 when something is.
|
|
215
|
+
The phone bot and the session key are shown, but they never fail it.
|
|
216
|
+
|
|
217
|
+
- No kit yet, or `sessionkit` will not start? The installer runs the same
|
|
218
|
+
check. Its address is not live yet. From a clone of this repository,
|
|
219
|
+
run `bash install.sh --check`. Once the address is live:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
curl -fsSL https://sessionkit.ai/install.sh | bash -s -- --check
|
|
223
|
+
```
|
|
224
|
+
|
|
197
225
|
## Quick start
|
|
198
226
|
|
|
199
227
|
```bash
|
|
200
228
|
sessionkit --version
|
|
201
229
|
```
|
|
202
230
|
|
|
203
|
-
It lists the kit
|
|
231
|
+
It lists the kit, each family package and settled, the Settings app, each
|
|
232
|
+
with its version. Each `X.Y.Z` is the version you installed:
|
|
204
233
|
|
|
205
234
|
```text
|
|
206
|
-
sessionkit, version
|
|
207
|
-
sessionmail
|
|
208
|
-
sessiontools
|
|
209
|
-
sessionphone
|
|
210
|
-
sessionview
|
|
211
|
-
sessionvoice
|
|
235
|
+
sessionkit, version X.Y.Z
|
|
236
|
+
sessionmail X.Y.Z
|
|
237
|
+
sessiontools X.Y.Z
|
|
238
|
+
sessionphone X.Y.Z
|
|
239
|
+
sessionview X.Y.Z
|
|
240
|
+
sessionvoice X.Y.Z
|
|
241
|
+
settled X.Y.Z
|
|
212
242
|
```
|
|
213
243
|
|
|
214
244
|
Start Claude in a project folder, not in your home folder, where a new
|
|
@@ -239,9 +269,9 @@ session start
|
|
|
239
269
|
|
|
240
270
|
- **Never a bare `claude`.** Mail to your agent's box, your phone's
|
|
241
271
|
included, reaches only a session started as that agent.
|
|
242
|
-
-
|
|
243
|
-
|
|
244
|
-
|
|
272
|
+
- **Without the box `claude`, the first session starts plain too.** The
|
|
273
|
+
mail setup under Installation makes the box ([first checks][checks]).
|
|
274
|
+
The line names the repair:
|
|
245
275
|
|
|
246
276
|
```text
|
|
247
277
|
session start: starting plain: box claude is missing, so this session will NOT hear Delta messages or calls; repair: message setup --box claude
|
|
@@ -275,6 +305,11 @@ mouth say "the build is green"
|
|
|
275
305
|
`mouth devices` lists the others, and `--device DEVICE` picks one.
|
|
276
306
|
- **To hear you**, the ears need a speech-to-text server: [hearing and
|
|
277
307
|
speaking][hearing].
|
|
308
|
+
- **See the conversation in a browser.** Talk shows what the ears heard,
|
|
309
|
+
what the mouth said, and which seats heard it. Start it with
|
|
310
|
+
`ears services install --only talk`, then run `talk pair` in a terminal
|
|
311
|
+
on the same Mac and open the link it prints. Each browser pairs once
|
|
312
|
+
([Talk][talk]).
|
|
278
313
|
- **Your agent talks with the kit's mouth and ears.** sessionvoice's ears
|
|
279
314
|
skill sets the default:
|
|
280
315
|
|
|
@@ -322,11 +357,16 @@ Session Kit installs these together:
|
|
|
322
357
|
`session start <name>`. A plain `claude` session does not hear calls you
|
|
323
358
|
make to it yet.
|
|
324
359
|
- [sessionview][pkg-view]: a tmux sidebar of your projects and your agents.
|
|
360
|
+
`sessionview` (said "session view").
|
|
361
|
+
|
|
362
|
+
It also installs settled, the Settings app: `settled`. It is not one of the
|
|
363
|
+
five: it has its own version, and no Claude Code plugin.
|
|
325
364
|
|
|
326
365
|
## Components
|
|
327
366
|
|
|
328
367
|
The commands, services and folders the install adds, and where each
|
|
329
|
-
package logs: [components][components].
|
|
368
|
+
package logs: [components][components]. To see the services and restart
|
|
369
|
+
one: [sessionkit service][service].
|
|
330
370
|
|
|
331
371
|
## Configuration
|
|
332
372
|
|
|
@@ -354,7 +394,7 @@ The rules for changing the kit: [AGENTS.md][agents].
|
|
|
354
394
|
|
|
355
395
|
## Status
|
|
356
396
|
|
|
357
|
-
Alpha, 0.3.
|
|
397
|
+
Alpha, 0.3.3. Tested on macOS 27 on Apple silicon; Linux and Windows are
|
|
358
398
|
untested. What you may still hit: [known gaps][gaps].
|
|
359
399
|
|
|
360
400
|
Licence: [AGPL-3.0][licence].
|
|
@@ -363,16 +403,19 @@ Licence: [AGPL-3.0][licence].
|
|
|
363
403
|
[brew]: https://brew.sh
|
|
364
404
|
[install]: INSTALL.md
|
|
365
405
|
[prereqs]: INSTALL.md#1-prerequisites-human
|
|
406
|
+
[setup]: INSTALL.md#2-install-the-kit
|
|
366
407
|
[checks]: INSTALL.md#4-first-checks
|
|
367
408
|
[hearing]: INSTALL.md#5-hearing-and-speaking-it-hears-me-and-speaks
|
|
368
409
|
[mail]: INSTALL.md#mail-between-agents
|
|
369
410
|
[uninstall]: INSTALL.md#8-uninstall
|
|
370
411
|
[gaps]: INSTALL.md#7-known-gaps-you-will-hit
|
|
371
412
|
[components]: docs/components.md
|
|
413
|
+
[service]: docs/service.md
|
|
372
414
|
[dependencies]: docs/dependencies.md
|
|
373
415
|
[logs]: docs/components.md#logs
|
|
374
416
|
[configuration]: docs/configuration.md
|
|
375
417
|
[settings]: docs/settings.md
|
|
418
|
+
[talk]: docs/talk.md
|
|
376
419
|
[troubleshooting]: docs/troubleshooting.md
|
|
377
420
|
[agents]: AGENTS.md
|
|
378
421
|
[licence]: LICENSE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sessionkit"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.3"
|
|
4
4
|
description = "Session Kit gives your Claude Code sessions voice, mail, a phone line and a tmux sidebar, in one install."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "AGPL-3.0-or-later"
|
|
@@ -9,11 +9,12 @@ classifiers = ["Development Status :: 3 - Alpha"]
|
|
|
9
9
|
requires-python = ">=3.11,<3.15"
|
|
10
10
|
dependencies = [
|
|
11
11
|
"click>=8.1",
|
|
12
|
-
"sessionmail>=0.3.
|
|
13
|
-
"sessiontools>=0.3.
|
|
14
|
-
"sessionphone[media]>=0.3.
|
|
15
|
-
"sessionview>=0.3.
|
|
16
|
-
"sessionvoice[capture]>=0.3.
|
|
12
|
+
"sessionmail>=0.3.3",
|
|
13
|
+
"sessiontools>=0.3.3",
|
|
14
|
+
"sessionphone[media]>=0.3.3",
|
|
15
|
+
"sessionview>=0.3.3",
|
|
16
|
+
"sessionvoice[capture]>=0.3.3",
|
|
17
|
+
"settled[kit]>=0.1.0",
|
|
17
18
|
]
|
|
18
19
|
|
|
19
20
|
[[project.authors]]
|
|
@@ -39,6 +40,7 @@ ears = "ears.cli:main"
|
|
|
39
40
|
ears-serve = "ears.serve:main"
|
|
40
41
|
mouth = "mouth.__main__:main"
|
|
41
42
|
talk = "talk.cli:main"
|
|
43
|
+
settled = "settled.cli:main"
|
|
42
44
|
|
|
43
45
|
[build-system]
|
|
44
46
|
requires = ["uv_build>=0.11.9,<0.12.0"]
|
|
@@ -51,4 +53,7 @@ dev = [
|
|
|
51
53
|
]
|
|
52
54
|
|
|
53
55
|
[tool.pytest.ini_options]
|
|
54
|
-
testpaths = [
|
|
56
|
+
testpaths = [
|
|
57
|
+
"tests",
|
|
58
|
+
"dark-launch/tests",
|
|
59
|
+
]
|