Skip to content

Commit 1173813

Browse files
committed
docs: stop asserting which machine the agent is on
CLAUDE.md said "there is usually no Chronicle stack on this workstation" and AGENTS.md said the deployment is "not on the machine containing this workspace". Both files are checked in, so they read identically on Kraken — which has this checkout at ~/workspaces/friend-lite and runs the stack locally. An agent there was told to go find a remote Kraken while running on it. Both now start by resolving `hostname`. Kraken runs under WSL2, so two Tailscale peers answer to that hostname; the resolution order now requires OS == linux, since the Windows host responds but serves no Chronicle. Separately, the docs described the desktop app as macOS-specific on every machine: docs/screenpipe.md claimed extras/vault-sync/main.py "selects the macOS menu bar or Linux system tray adapter" with desktop_core.py holding shared state. Neither file exists. The entry point is extras/chronicle-tray/app.py — a single QSystemTrayIcon that renders in both — and vault-sync is now a library plus legacy pre-tray service management. Three other "macOS menu bar app" references updated to match.
1 parent 827b9a1 commit 1173813

5 files changed

Lines changed: 39 additions & 13 deletions

File tree

AGENTS.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,20 @@ This supports a comprehensive web dashboard for management.
1515

1616
## Live Deployment Location
1717

18-
The normal live Chronicle deployment is hosted on the Tailnet machine **`kraken`**, not
19-
on the machine containing this workspace. A stopped or unconfigured local stack does
18+
The normal live Chronicle deployment is hosted on the Tailnet machine **`kraken`**. Run
19+
`hostname` before acting on this section — this file is checked in and reads the same on
20+
every machine, including Kraken itself, where the deployment is *local* and there is no
21+
remote host to reach. On any other machine a stopped or unconfigured local stack does
2022
not mean Chronicle is unavailable.
2123

2224
For read-only checks of the running application (health checks, API inspection, or
2325
browser/screenshot verification):
2426

2527
1. Try `https://kraken.parrot-census.ts.net` first. Use HTTPS; plain HTTP redirects.
2628
2. If that name is unavailable, inspect the current Tailscale mesh with
27-
`tailscale status --json` and resolve the online peer whose `HostName` is `Kraken`.
29+
`tailscale status --json` and resolve the online peer whose `HostName` is `Kraken`
30+
**and whose `OS` is `linux`** — Kraken runs under WSL2, so the Windows host
31+
advertises the same hostname and answers pings while serving no Chronicle.
2832
Prefer its returned `DNSName`; use its current Tailscale IP only as a temporary
2933
fallback. Do not persist a `100.x` address because it may change.
3034
3. If the host is reachable but the Chronicle endpoint is unclear, use the repository's

CLAUDE.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,20 @@
44

55
## Verifying against a running backend
66

7-
There is usually **no** Chronicle stack on this workstation — but that does not mean
8-
you cannot verify your work. The live deployment runs on **`kraken`** and is reachable
9-
from here without any tunnel:
7+
**First work out which machine you are on — this file is checked in, so it reads the
8+
same on every one of them.** Run `hostname`:
9+
10+
| hostname | what it is | how to verify |
11+
|---|---|---|
12+
| `rainbow` | Ankush's dev workstation (CachyOS). Usually **no** Chronicle stack running. | Reach Kraken over the network, as below. |
13+
| `Kraken` | The live deployment (Ubuntu 24.04 under WSL2). The stack is running **locally**. | Check it locally — `podman ps`, `curl localhost:8000/health`. Do **not** go looking for a remote Kraken; you are it. |
14+
15+
Anything below about reaching Kraken applies when you are *not* on Kraken. Do not
16+
describe a machine as macOS unless `uname -s` actually says `Darwin`.
17+
18+
If there is no Chronicle stack on the machine you are on, that does not mean you
19+
cannot verify your work. The live deployment runs on **`kraken`** and is reachable
20+
from `rainbow` without any tunnel:
1021

1122
- `https://kraken.parrot-census.ts.net` (Tailnet, preferred)
1223
- `https://192.168.0.110/` over LAN — self-signed cert, so use `curl -k`. Caddy on
@@ -16,6 +27,10 @@ Before reporting something as "not verified because nothing is running locally",
1627
check Kraken first. See AGENTS.md → "Live Deployment Location" for the full
1728
resolution order.
1829

30+
Note that Kraken runs in WSL2, so **two** Tailscale peers answer to the hostname
31+
`Kraken` — the Linux guest (which runs Chronicle) and the Windows host. When
32+
resolving it from `tailscale status --json`, take the one whose `OS` is `linux`.
33+
1934
Kraken runs *deployed* code from `~/workspaces/friend-lite` on that host, so it will
2035
not have uncommitted local changes. To exercise new backend code end-to-end, stand up
2136
the pieces you need locally (a `podman run` Mongo plus the FastAPI app is usually

docs/backend/memories.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ Chat is always **agentic / tool-calling**. The chat LLM is given a `search_memor
9898

9999
## Vault sync to Obsidian (separate feature)
100100

101-
The vault is designed to be edited and viewed directly. The optional **vault-sync** feature (`extras/vault-sync/`, macOS menu bar app) syncs `data/conversation_docs/` to an Obsidian vault via Syncthing, so you can browse and hand-edit your memory notes in Obsidian. Human edits made in Obsidian sync back into the vault. This sync is independent of the memory provider itself — the vault on the backend remains the source of truth.
101+
The vault is designed to be edited and viewed directly. The optional **vault sync** feature (in the cross-platform desktop tray, `extras/chronicle-tray/`) syncs `data/conversation_docs/` to an Obsidian vault via Syncthing, so you can browse and hand-edit your memory notes in Obsidian. Human edits made in Obsidian sync back into the vault. This sync is independent of the memory provider itself — the vault on the backend remains the source of truth.
102102

103103
## What was removed
104104

docs/overview.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ Audio/Images/Data → Ingestion → Processing → Memories
7373
| **ASR Services** | `extras/asr-services/` | Local speech-to-text (Parakeet) |
7474
| **TTS Services** | `extras/tts/` | Text-to-speech (TADA, Fish Speech, KittenTTS) |
7575
| **HAVPE Relay** | `extras/havpe-relay/` | ESP32 audio bridge |
76-
| **Vault Sync** | `extras/vault-sync/` | macOS menu bar app — syncs your conversation_docs vault to Obsidian via Syncthing |
76+
| **Desktop tray** | `extras/chronicle-tray/` | Cross-platform tray/menu-bar app (Linux + macOS): vault sync, ScreenPipe controls, pendant |
7777

7878
### Pluggable Providers
7979

@@ -99,7 +99,8 @@ chronicle/
9999
│ ├── asr-services/ # Local ASR (Parakeet)
100100
│ ├── tts/ # Text-to-speech (TADA, Fish Speech, KittenTTS)
101101
│ ├── havpe-relay/ # ESP32 audio bridge
102-
│ └── vault-sync/ # macOS menu bar app: vault ⇄ Obsidian via Syncthing
102+
│ ├── chronicle-tray/ # cross-platform desktop tray (Linux + macOS)
103+
│ └── vault-sync/ # vault ⇄ Obsidian sync core used by the tray
103104
├── config/ # Central configuration
104105
├── docs/ # Documentation
105106
├── tests/ # Integration tests (Robot Framework)

docs/screenpipe.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@ the timeline and memory curator.
1313
observation lifecycle, checkpoints progress, and answers bounded media requests.
1414
- Chronicle's backend stores timeline activity and only the media selected for a
1515
durable Chronicle view or memory.
16-
- `extras/vault-sync/` is the single Chronicle desktop entry point. `main.py` selects
17-
the macOS menu bar or Linux system tray adapter; `desktop_core.py` contains their
18-
shared state, logging, and vault synchronization.
16+
- `extras/chronicle-tray/` is the single Chronicle desktop entry point, on every
17+
platform. `app.py` is one `QSystemTrayIcon` that renders in the Linux system tray
18+
and the macOS menu bar alike; the menu is assembled from `sections/`. It imports
19+
the vault-sync core (`extras/vault-sync/chronicle_vault_sync/core.py`) in place —
20+
that package is now a library plus its legacy pre-tray service management, not a
21+
desktop app of its own.
1922
- ScreenPipe's own desktop UI is an optional, on-demand local timeline viewer. It is
2023
not the recorder and should not autostart or launch a second recording process.
2124

@@ -240,7 +243,10 @@ systemctl --user status screenpipe.service chronicle-screenpipe.service chronicl
240243
journalctl --user -u screenpipe.service -u chronicle-screenpipe.service -u chronicle-desktop.service
241244
```
242245

243-
On macOS, use `extras/vault-sync/start.sh logs` for the installed desktop service.
246+
On macOS the same services are launchd agents rather than systemd units, so use
247+
`launchctl print gui/$(id -u)/<label>` and the logs under `~/Library/Logs/Chronicle/`
248+
(labels are in `clients.py`). `extras/vault-sync/start.sh logs` only covers a legacy
249+
pre-tray install.
244250

245251
The Linux ScreenPipe UI launcher may set rendering/onboarding environment required by
246252
the locally installed build, but its desktop autostart entry should remain disabled.

0 commit comments

Comments
 (0)