convos 0.8.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.
- convos-0.8.1/LICENSE +21 -0
- convos-0.8.1/PKG-INFO +447 -0
- convos-0.8.1/README.md +417 -0
- convos-0.8.1/pyproject.toml +59 -0
- convos-0.8.1/setup.cfg +4 -0
- convos-0.8.1/skills/convos/SKILL.md +235 -0
- convos-0.8.1/src/ai_convos/__init__.py +3 -0
- convos-0.8.1/src/ai_convos/__main__.py +4 -0
- convos-0.8.1/src/ai_convos/cli.py +1310 -0
- convos-0.8.1/src/convos.egg-info/PKG-INFO +447 -0
- convos-0.8.1/src/convos.egg-info/SOURCES.txt +33 -0
- convos-0.8.1/src/convos.egg-info/dependency_links.txt +1 -0
- convos-0.8.1/src/convos.egg-info/entry_points.txt +2 -0
- convos-0.8.1/src/convos.egg-info/requires.txt +19 -0
- convos-0.8.1/src/convos.egg-info/top_level.txt +1 -0
- convos-0.8.1/tests/test_budget.py +54 -0
- convos-0.8.1/tests/test_changegraph.py +138 -0
- convos-0.8.1/tests/test_eval.py +69 -0
- convos-0.8.1/tests/test_explore.py +62 -0
- convos-0.8.1/tests/test_hooks.py +291 -0
- convos-0.8.1/tests/test_hybrid.py +260 -0
- convos-0.8.1/tests/test_integrations.py +545 -0
- convos-0.8.1/tests/test_memory.py +682 -0
- convos-0.8.1/tests/test_parsers.py +658 -0
- convos-0.8.1/tests/test_provenance.py +124 -0
- convos-0.8.1/tests/test_redact.py +95 -0
- convos-0.8.1/tests/test_remote_acceptance.py +85 -0
- convos-0.8.1/tests/test_remote_client.py +503 -0
- convos-0.8.1/tests/test_remote_control.py +57 -0
- convos-0.8.1/tests/test_remote_examples.py +10 -0
- convos-0.8.1/tests/test_remote_operations.py +39 -0
- convos-0.8.1/tests/test_remote_projection.py +182 -0
- convos-0.8.1/tests/test_remote_protocol.py +117 -0
- convos-0.8.1/tests/test_remote_server.py +144 -0
- convos-0.8.1/tests/test_resume.py +82 -0
convos-0.8.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Robert
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
convos-0.8.1/PKG-INFO
ADDED
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: convos
|
|
3
|
+
Version: 0.8.1
|
|
4
|
+
Summary: Queryable memory for coding agents, backed by exact conversation evidence
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Documentation, https://github.com/RobertBiehl/convos#readme
|
|
7
|
+
Project-URL: Issues, https://github.com/RobertBiehl/convos/issues
|
|
8
|
+
Project-URL: Repository, https://github.com/RobertBiehl/convos
|
|
9
|
+
Requires-Python: >=3.12
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Requires-Dist: duckdb>=1.0.0
|
|
13
|
+
Requires-Dist: typer>=0.12.0
|
|
14
|
+
Requires-Dist: cryptography>=42.0.0
|
|
15
|
+
Requires-Dist: llama-cpp-python>=0.3.0
|
|
16
|
+
Requires-Dist: huggingface-hub>=0.20.0
|
|
17
|
+
Provides-Extra: redact
|
|
18
|
+
Requires-Dist: convos-redact<0.9,>=0.8; extra == "redact"
|
|
19
|
+
Provides-Extra: dev
|
|
20
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
21
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
22
|
+
Requires-Dist: convos-changegraph; extra == "dev"
|
|
23
|
+
Requires-Dist: convos-explore; extra == "dev"
|
|
24
|
+
Requires-Dist: convos-memory; extra == "dev"
|
|
25
|
+
Requires-Dist: convos-redact; extra == "dev"
|
|
26
|
+
Requires-Dist: convos-resume; extra == "dev"
|
|
27
|
+
Requires-Dist: convos-remote; extra == "dev"
|
|
28
|
+
Requires-Dist: convos-remote-server; extra == "dev"
|
|
29
|
+
Dynamic: license-file
|
|
30
|
+
|
|
31
|
+
# Convos
|
|
32
|
+
|
|
33
|
+
[](https://github.com/RobertBiehl/convos/actions/workflows/tests.yml)
|
|
34
|
+
[](https://pypi.org/project/convos/)
|
|
35
|
+
[](LICENSE)
|
|
36
|
+
|
|
37
|
+
**Queryable memory for coding agents, backed by exact conversation evidence.**
|
|
38
|
+
|
|
39
|
+
Convos captures Claude Code and Codex work automatically, recalls relevant
|
|
40
|
+
decisions across ChatGPT, Claude, Claude Code, and Codex, then gives agents the
|
|
41
|
+
exact turns they need to continue.
|
|
42
|
+
|
|
43
|
+
## Give this to your agent
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
Install Convos from PyPI with `uv tool install convos` (use pipx only if uv is unavailable), run `convos init`, then run `convos doctor` and repair any reported skill or hook issue. Run `convos embed` so semantic retrieval is ready, use `convos query "why did we make this decision?"` to find a relevant past conversation, and verify the strongest result with `convos read CONVERSATION_ID --around MESSAGE_ID`. Do not configure web sync, credentials, or a remote service unless I ask.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The daily agent workflow is **Capture -> Recall -> Continue**: lifecycle hooks
|
|
50
|
+
capture completed local turns, hybrid retrieval finds the right prior work, and
|
|
51
|
+
bounded reads provide exact evidence instead of generated recollections.
|
|
52
|
+
|
|
53
|
+
## Why this exists
|
|
54
|
+
|
|
55
|
+
- Resume work across coding agents without reconstructing old sessions
|
|
56
|
+
- Retrieve prior decisions, commands, evidence, and edits without dumping whole transcripts
|
|
57
|
+
- Keep ChatGPT, Claude, Claude Code, and Codex history locally searchable
|
|
58
|
+
- Keep the same encrypted memory available across computers without path allowlists
|
|
59
|
+
- Share project-associated prompts and changes automatically with encrypted team workspaces
|
|
60
|
+
- Use a CLI skill and lifecycle hooks; the self-hosted relay is optional
|
|
61
|
+
|
|
62
|
+
## Features
|
|
63
|
+
|
|
64
|
+
- Fast full-text search with direct source, day, role, project, conversation, and thinking filters
|
|
65
|
+
- Hybrid semantic search (BM25 + embeddings + Reciprocal Rank Fusion) via `convos query`
|
|
66
|
+
- Fetch from ChatGPT and Claude using browser cookies
|
|
67
|
+
- Import exports from ChatGPT, Claude, Claude Code, and Codex
|
|
68
|
+
- Capture completed Claude Code + Codex turns just in time with lifecycle hooks
|
|
69
|
+
- Deterministic project resume packets and exact session replay
|
|
70
|
+
- Optional code-change provenance: blame, timeline, time travel, and graph browsing
|
|
71
|
+
- Optional end-to-end encrypted personal multi-device and team synchronization
|
|
72
|
+
- Local secret scanning with mandatory pre-encryption team redaction
|
|
73
|
+
- Export to JSON or CSV
|
|
74
|
+
|
|
75
|
+
## Install
|
|
76
|
+
|
|
77
|
+
Install from PyPI with uv, initialize local capture, and prepare semantic recall:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
uv tool install convos
|
|
81
|
+
convos init
|
|
82
|
+
convos embed
|
|
83
|
+
convos doctor
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
`pipx install convos` is also supported.
|
|
87
|
+
|
|
88
|
+
Upgrade later with:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
uv tool upgrade convos
|
|
92
|
+
convos install-skills
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The first install may compile `llama-cpp-python` locally and take about a
|
|
96
|
+
minute on macOS; later reinstalls reuse the built package.
|
|
97
|
+
|
|
98
|
+
`convos init` creates the archive, installs the bundled Codex + Claude Code
|
|
99
|
+
skill and capture hooks, imports existing local Codex and Claude Code sessions,
|
|
100
|
+
and performs safe local setup for installed products. That first local scan is
|
|
101
|
+
incremental on later runs and never probes ChatGPT or Claude web. With the
|
|
102
|
+
Memory product installed, the same command turns on automatic memory delivery
|
|
103
|
+
for the current project. It never downloads the retrieval model, configures a
|
|
104
|
+
remote service, or deletes data. Codex asks you to review new or changed hooks once
|
|
105
|
+
through `/hooks`. Refresh only the skill with:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
convos install-skills
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Encrypted Remote
|
|
112
|
+
|
|
113
|
+
Install the Remote client beside Convos to carry the same encrypted archive
|
|
114
|
+
between personal devices or into team workspaces:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
uv tool install convos --with convos-remote
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
The relay is a separate, independently deployable package and never receives
|
|
121
|
+
conversation plaintext, repository names, file paths, embeddings, attachments,
|
|
122
|
+
or workspace keys:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
uv tool install convos-remote-server
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
See [self-hosting, recovery, team policy, and installation](docs/remote.md) and
|
|
129
|
+
the runnable synthetic [personal and team scenarios](examples/remote/README.md).
|
|
130
|
+
|
|
131
|
+
## Additional workspace products
|
|
132
|
+
|
|
133
|
+
Redact is published on PyPI because it is part of Remote's team boundary. The
|
|
134
|
+
other applications below remain source-only while their public product surface
|
|
135
|
+
is still being shaped.
|
|
136
|
+
|
|
137
|
+
Optionally add code-change provenance without expanding the core CLI package:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
uv tool install convos --with "convos-changegraph @ git+https://github.com/RobertBiehl/convos.git#subdirectory=apps/changegraph"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
This adds `convos blame`, `timeline`, `at`, `graph`, and `browse`.
|
|
144
|
+
|
|
145
|
+
Navigate semantically from any exact conversation or turn without sending
|
|
146
|
+
archive text to a generation service:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
uv tool install convos --with "convos-explore @ git+https://github.com/RobertBiehl/convos.git#subdirectory=apps/explore"
|
|
150
|
+
convos related CONVERSATION_OR_MESSAGE_ID
|
|
151
|
+
convos trail CONVERSATION_OR_MESSAGE_ID
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
`related` returns one strongest matching turn per neighboring conversation,
|
|
155
|
+
collapses exact duplicate turns, excludes known injected agent scaffolding, and
|
|
156
|
+
prints exact `read --around` pivots. `trail` follows those evidence turns
|
|
157
|
+
through a bounded, cycle-free multi-hop semantic graph with text, JSON, JSONL,
|
|
158
|
+
and DOT output. See [semantic conversation exploration](docs/explore.md).
|
|
159
|
+
|
|
160
|
+
Audit an archive for high-confidence credentials without printing their values:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
uv tool install "convos[redact]"
|
|
164
|
+
convos redact scan
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
The encrypted remote client installs this scanner as a required dependency and
|
|
168
|
+
scrubs every team record before signing or encryption. Personal synchronization
|
|
169
|
+
remains lossless. Team attachment bodies are omitted because arbitrary binary
|
|
170
|
+
content cannot be proven safe by the dependency-free scanner. Use
|
|
171
|
+
`convos redact status` to inspect value-free automatic-redaction records. See
|
|
172
|
+
[local secret protection](docs/redact.md).
|
|
173
|
+
|
|
174
|
+
Resume a project from live repository state and exact archived evidence without
|
|
175
|
+
asking a model to invent a summary:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
uv tool install convos --with "convos-resume @ git+https://github.com/RobertBiehl/convos.git#subdirectory=apps/resume"
|
|
179
|
+
cd /path/to/project
|
|
180
|
+
convos resume
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
The packet includes current Git branch, HEAD and bounded dirty status, recent
|
|
184
|
+
cwd-scoped sessions, exact last-turn IDs, touched files, tool statuses, and
|
|
185
|
+
secret-scrubbed turn excerpts under a global evidence budget. It labels archived
|
|
186
|
+
text as untrusted and prints exact `read --around` commands for verification.
|
|
187
|
+
`-f json` exposes the same deterministic structure to agents. See [project
|
|
188
|
+
resume packets](docs/resume.md).
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
convos replay CONVERSATION_ID
|
|
192
|
+
convos replay CONVERSATION_ID --around MESSAGE_ID -n 40 --activity 120
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Replay returns a bounded exact message window with its ordered tool calls and
|
|
196
|
+
file edits. It is evidence of captured activity, not an inferred summary.
|
|
197
|
+
|
|
198
|
+
Track and reconcile Codex and Claude Code memories through a canonical local
|
|
199
|
+
overlay without rewriting either provider's generated state:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
uv tool install convos --with "convos-memory @ git+https://github.com/RobertBiehl/convos.git#subdirectory=apps/memory"
|
|
203
|
+
convos init
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
`init` is safe to rerun after adding the Memory extra. Existing installations
|
|
207
|
+
can use `convos memory enable` as the narrower repair/upgrade command. New
|
|
208
|
+
projects initialize automatically on first context delivery; use `convos memory
|
|
209
|
+
enable --all` only to warm every already-discovered scope up front. Memory adds
|
|
210
|
+
one-command project synchronization with deterministic safe
|
|
211
|
+
bootstrapping and exact matching, agent-assisted semantic resolution,
|
|
212
|
+
agent-ready automatic Claude and Codex session injection, direct revisioned
|
|
213
|
+
user-owned `remember`/`forget`, automatic safe
|
|
214
|
+
reconciliation during delivery, history, and reversible drift-safe Claude
|
|
215
|
+
projection. A remembered revision can cite exact local archive turns with
|
|
216
|
+
repeatable `--from MESSAGE_ID`; audits verify their hashes and print direct
|
|
217
|
+
`read --around` pivots without duplicating or remotely syncing conversation
|
|
218
|
+
text. `convos memory sync --all` safely settles
|
|
219
|
+
mechanical updates across every project without exposing memory content. The normal
|
|
220
|
+
`convos doctor` also checks its ledger and delivery setup. If a memory decision
|
|
221
|
+
is needed, `convos memory review` shows plain before/new/current text without
|
|
222
|
+
engine IDs; then just tell Codex or Claude `sync my memories`. The skill handles
|
|
223
|
+
the plan and transaction. Codex requires one-time review of new or
|
|
224
|
+
changed hook entries through `/hooks`. See [the memory synchronization
|
|
225
|
+
workflow](docs/memory.md).
|
|
226
|
+
|
|
227
|
+
Run bare `convos memory` for plain current-project health: available memories,
|
|
228
|
+
automatic delivery, and the exact next action when attention is needed. Engine
|
|
229
|
+
counts, hook trust, and source provenance stay in `convos doctor` and JSON.
|
|
230
|
+
Help shows only normal human commands; the synchronization protocol remains
|
|
231
|
+
available to installed agents without cluttering the first-run API.
|
|
232
|
+
`convos memory backup` creates a private, consistent snapshot of the complete
|
|
233
|
+
ledger. `convos memory restore SNAPSHOT` previews recovery; `--yes` restores it
|
|
234
|
+
only after automatically preserving the current ledger as a rescue snapshot.
|
|
235
|
+
The snapshot's private Git evidence lets matching clones and worktrees reuse the
|
|
236
|
+
same memory scope at different checkout paths while distinct fork origins stay
|
|
237
|
+
isolated.
|
|
238
|
+
|
|
239
|
+
`convos memory audit` verifies every current and historical evidence hash in
|
|
240
|
+
the surrounding project without printing memory or transcript content. Use
|
|
241
|
+
`--message MESSAGE_ID` for reverse provenance or `--all --json` for a
|
|
242
|
+
content-free cross-project health check.
|
|
243
|
+
Ordinary revision, history, and preview-first deletion accept a memory's
|
|
244
|
+
displayed first-line title or unique literal text, so stable `mem_...` IDs are
|
|
245
|
+
available for automation without being required for routine use.
|
|
246
|
+
|
|
247
|
+
For an unreleased Git snapshot, install both products from the same revision:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
uv tool install --reinstall "git+https://github.com/RobertBiehl/convos.git" \
|
|
251
|
+
--with "convos-memory @ git+https://github.com/RobertBiehl/convos.git#subdirectory=apps/memory"
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
The encrypted remote uses one client package and one independently installable
|
|
255
|
+
server package, so the local archive stays server-free by default.
|
|
256
|
+
When the memory and remote clients are both present, personal background sync
|
|
257
|
+
automatically carries canonical memory revisions in the same end-to-end
|
|
258
|
+
encrypted event stream; concurrent semantic changes remain reviewable instead
|
|
259
|
+
of becoming last-write-wins. User-owned forget operations also remove safe
|
|
260
|
+
remote-only copies and the author's prior relay ciphertext while preserving
|
|
261
|
+
local or provider divergence. Neither product depends on the other.
|
|
262
|
+
See [`examples/insights`](examples/insights/README.md) for local decision,
|
|
263
|
+
comparison, archive-statistics, and prompt-to-change query recipes.
|
|
264
|
+
|
|
265
|
+
## Quickstart
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
convos init
|
|
269
|
+
convos sync # optional ChatGPT, Claude web, and export backfill
|
|
270
|
+
convos doctor
|
|
271
|
+
convos search "prompt" -s claude -n 10
|
|
272
|
+
convos query "conceptual search"
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
If Safari cookies are protected by macOS privacy, `sync` will fall back to Chrome.
|
|
276
|
+
|
|
277
|
+
## Common commands
|
|
278
|
+
|
|
279
|
+
Search:
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
convos search "vector database" -s chatgpt -d 30 # BM25 only
|
|
283
|
+
convos search "decision" --cwd /path/to/repo # exact project scope
|
|
284
|
+
convos query "why did we choose this?" --conversation f2b9c5a9
|
|
285
|
+
convos search "reasoning" --thinking
|
|
286
|
+
convos read f2b9c5a9 -n 20 -f jsonl # bounded recent context from one result
|
|
287
|
+
convos embed # backfill embeddings, no web sync
|
|
288
|
+
convos query "how do I store vectors in duckdb" # hybrid: BM25 + embeddings + RRF
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
Both discovery commands return the strongest matching message from each
|
|
292
|
+
conversation, so `-n` controls the number of distinct conversation candidates.
|
|
293
|
+
Both accept `--cwd`/`-w` to include one recorded directory and its descendants,
|
|
294
|
+
plus `--conversation` for an exact conversation-ID prefix. These direct options
|
|
295
|
+
replace the deferred custom query language.
|
|
296
|
+
|
|
297
|
+
Semantic search is included by default. Run `convos embed` after install to
|
|
298
|
+
backfill embeddings with a progress bar. Hooks and `convos sync` queue new or
|
|
299
|
+
changed messages; `convos query` embeds that queue just in time. The
|
|
300
|
+
`embeddinggemma-300m-qat-q8_0` model produces 768d embeddings locally via
|
|
301
|
+
llama.cpp.
|
|
302
|
+
|
|
303
|
+
Read a known conversation using an ID prefix from search/query:
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
convos read f2b9c5a9 -n 20 -c 2000 -f jsonl
|
|
307
|
+
convos read f2b9c5a9 --around 01ab -n 20 -f jsonl
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
Replay one conversation with its captured tool and edit evidence:
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
uv tool install convos --with "convos-resume @ git+https://github.com/RobertBiehl/convos.git#subdirectory=apps/resume"
|
|
314
|
+
convos replay CONVERSATION_ID
|
|
315
|
+
convos replay CONVERSATION_ID --around MESSAGE_ID -f json
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Replay is part of the Resume product and keeps the same deterministic,
|
|
319
|
+
explicitly bounded evidence contract. See [project handoff and
|
|
320
|
+
replay](docs/resume.md).
|
|
321
|
+
|
|
322
|
+
List and analyze with read-only DuckDB SQL (schema in `docs/database.md`):
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
convos sql "SELECT id, title, created_at FROM conversations ORDER BY created_at DESC LIMIT 20" -f json
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Sync:
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
convos sync # local plus available web/export sources
|
|
332
|
+
convos sync --local-only # local agents and configured exports; no web
|
|
333
|
+
convos sync -w -i 600
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
Local Claude Code and Codex sessions can be ingested after each completed turn:
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
convos install-hooks # repair or refresh hooks installed by init
|
|
340
|
+
convos install-hooks --status
|
|
341
|
+
convos install-hooks --remove # remove only convos hook handlers
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
Start a new agent session after installing hooks. In Codex, review the user
|
|
345
|
+
hook through `/hooks`; after the first completed turn, `convos doctor` should
|
|
346
|
+
show a recent `ingest: ... last=...` timestamp.
|
|
347
|
+
|
|
348
|
+
Hooks enqueue only the local transcript path and file metadata, then return
|
|
349
|
+
immediately. A coalescing background drain parses and upserts the transcript;
|
|
350
|
+
`search` and `query` rebuild FTS once for all pending changes before reading.
|
|
351
|
+
`query` also embeds only
|
|
352
|
+
the changed hook messages, while `search` and `sql` avoid loading the embedding
|
|
353
|
+
model. `sync` remains the reconciliation path for missed local events, web
|
|
354
|
+
providers, pre-hook sessions, and imports rather than a routine local update.
|
|
355
|
+
|
|
356
|
+
Check the complete local pipeline with `convos doctor`. It reports the running
|
|
357
|
+
version, archive/schema/FTS health, embedding backlog, queued ingestion, hook
|
|
358
|
+
installation, exact freshness of both installed agent skill copies, and
|
|
359
|
+
web-cookie availability without modifying the archive. Missing or stale skill
|
|
360
|
+
content reports `convos install-skills` as the repair. Hook health similarly
|
|
361
|
+
requires the current executable and archive root exactly once in every required
|
|
362
|
+
agent event; stale, duplicated, or misplaced handlers report `convos
|
|
363
|
+
install-hooks`.
|
|
364
|
+
|
|
365
|
+
Auto-import export paths with:
|
|
366
|
+
|
|
367
|
+
```bash
|
|
368
|
+
CONVOS_IMPORT_PATHS="~/Downloads/chatgpt-export.zip,~/.claude/projects" convos sync
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
Export:
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
convos export out.json -f json
|
|
375
|
+
convos export out.csv -f csv -s claude
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
## Example output
|
|
379
|
+
|
|
380
|
+
```bash
|
|
381
|
+
convos sync
|
|
382
|
+
```
|
|
383
|
+
```text
|
|
384
|
+
Syncing Claude Code (2 convs, 118 msgs, 12 tools, 0 attachs, 4 edits)
|
|
385
|
+
Syncing Codex (8 convs, 214 msgs, 19 tools, 0 attachs, 0 edits)
|
|
386
|
+
Syncing ChatGPT (142 convs, 1734 msgs, 97 tools, 12 attachs, 0 edits)
|
|
387
|
+
Syncing Claude (96 convs, 842 msgs, 0 tools, 5 attachs, 0 edits)
|
|
388
|
+
Updated Codex (0 new, 1 updated convs; 0 convs, 9 msgs, 0 tools, 0 attachs, 0 edits processed)
|
|
389
|
+
Updated 0 new, 1 updated convs; 9 msgs, 0 tools, 0 attachs, 0 edits
|
|
390
|
+
Total: 248 convs, 2908 msgs, 128 tools, 17 attachs, 4 edits
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
```bash
|
|
394
|
+
convos search "vector database" -s chatgpt -d 30
|
|
395
|
+
```
|
|
396
|
+
```text
|
|
397
|
+
f2b9c5a9 ChatGPT "Indexing embeddings with DuckDB" 2026-01-14T09:22:11Z
|
|
398
|
+
8a1d0c3e ChatGPT "Choosing ANN libraries" 2026-01-10T18:03:42Z
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
convos read f2b9c5a9 -f jsonl
|
|
403
|
+
```
|
|
404
|
+
```text
|
|
405
|
+
{"id":"01ab...","role":"user","content":"How do I store vectors in DuckDB?","thinking":null,"created_at":"2026-01-14 09:22:11"}
|
|
406
|
+
{"id":"02cd...","role":"assistant","content":"Use a table with a FLOAT[] column and an HNSW index...","thinking":null,"created_at":"2026-01-14 09:22:42"}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
## Data model
|
|
410
|
+
|
|
411
|
+
Data lives in `<root>/data/convos.db` (DuckDB). Default root is `~/.convos` (override with `CONVOS_PROJECT_ROOT`).
|
|
412
|
+
|
|
413
|
+
- `conversations`
|
|
414
|
+
- `messages`
|
|
415
|
+
- `tool_calls`
|
|
416
|
+
- `attachments`
|
|
417
|
+
- `artifacts`
|
|
418
|
+
- `file_edits`
|
|
419
|
+
|
|
420
|
+
## Privacy and security
|
|
421
|
+
|
|
422
|
+
This is local-first. Your data never leaves your machine unless you export it
|
|
423
|
+
or explicitly configure the optional encrypted remote. The remote receives
|
|
424
|
+
ciphertext and synchronization metadata, never workspace keys or plaintext.
|
|
425
|
+
|
|
426
|
+
On macOS, Safari cookie access requires Full Disk Access for your terminal.
|
|
427
|
+
If you prefer not to grant it, use Chrome cookies with `-b chrome`.
|
|
428
|
+
|
|
429
|
+
## FAQ
|
|
430
|
+
|
|
431
|
+
Q: Why is fetch failing on Safari?
|
|
432
|
+
A: macOS blocks access to Safari cookies without Full Disk Access. Use `-b chrome` or grant access.
|
|
433
|
+
|
|
434
|
+
Q: Where is the database stored?
|
|
435
|
+
A: `~/.convos/data/convos.db` by default (override with `CONVOS_PROJECT_ROOT`).
|
|
436
|
+
|
|
437
|
+
Q: Can I reset the DB?
|
|
438
|
+
A: Delete `~/.convos/data/convos.db` (or `<root>/data/convos.db`) and re-run `convos init`.
|
|
439
|
+
|
|
440
|
+
## Contributing
|
|
441
|
+
|
|
442
|
+
PRs welcome. Keep changes small and focused. See `AGENTS.md` for architecture and coding style.
|
|
443
|
+
|
|
444
|
+
## Agent usage
|
|
445
|
+
|
|
446
|
+
Agents should use the CLI only. See `skills/convos/SKILL.md`.
|
|
447
|
+
For setup and usage with Codex/Claude, see `docs/skills-setup.md`.
|