phData work-agent — setup plan (v1, pending the work-machine install gate)
Founder asked 2026-05-30 (08:48 ET) to stand up a personal AI agent for his phData work. He clarified the shape at 23:51 ET. This plan reflects his ACTUAL answers (corrected from a v0 that mis-stated them — see provenance note).
Founder's actual requirements (his words, 23:51 ET)
- Air-gapped from Ray. Confirmed. The two agents never share context. (Matches the confidentiality-blast-radius rec below.)
- Runs on his phData WORK computer — NOT the Mac Mini, NOT alongside Ray.
- NOT always-on. On only while he's working — a session he launches, not a boot-persistent daemon.
- Passive background help while he does other things — drafts/triages in the background during a work session.
- Killer use case: email-response drafting. "Even having all my email responses drafted for me would be a huge help."
What this changes vs a Ray clone (simpler, not harder)
- No LaunchAgent / no 4am-restart / no always-on tmux daemon. It's Claude Code launched on the work machine when he starts working; it runs the autonomous-loop pattern within that session and goes quiet when he closes it. Much less infra than Ray.
- No Mac Mini involvement. Entirely on the work box.
- Background-help = the autonomous loop, session-scoped: while he's heads-down on something else, the agent drafts email replies + triages, surfacing them for his review.
MVP: email-draft-triage
Gmail integration drafts replies into his drafts folder; he reviews + sends. Human-gated send — nothing leaves without him (same rule Ray runs, [[feedback_no_autonomous_external_email]]). Gmail MCP create_draft supports exactly this. This is the clean first deliverable; everything else (Obsidian KB, Docs, calendar) layers on after.
Install gate — CLEARED (founder confirmed 2026-05-31 00:00 ET), with a constraint map
Claude Code is already installed on the work machine. Main gate cleared. But the box is locked-down; founder enumerated the actual constraints (his words):
| Capability | Status on work machine | Workaround |
|---|---|---|
| Claude Code install | ✅ installed | — |
| Auto mode | ❌ not available | Minor for a sit-at-it session agent — approve as you go; scoped allowlist in settings.json kills prompts for safe read ops |
| Atlassian/Jira, Zoom, Slack connectors | ❌ blocked | Slack was never needed (session-based = work in terminal directly); Jira/Zoom out of MVP scope |
| Gdrive connector | ❌ blocked | ✅ SOLVED — founder uses Drive-for-Desktop; Claude reads it as normal filesystem. Filesystem is the universal escape hatch for blocked connectors. |
| Gmail/email | ⚠️ OPEN — he doesn't see the connector he used personally in Claude Desktop | Two fallbacks (see below) — the one real open question |
| Version control | Bitbucket, not GitHub | Use Bitbucket (git is git; just a different remote) |
| Secrets | LastPass, not 1Password; LastPass CLI doesn't support federated login (phData uses federated SSO) | For a session agent: macOS Keychain or per-session interactive auth — don't need the LastPass CLI at all |
| Obsidian + QMD | ✅ can install | KB layer solid |
The load-bearing pattern: connector-based integrations are blocked, but filesystem access survives everything (proven by the gdrive-for-desktop move). Build on files, not connectors, wherever possible.
The one real open question: EMAIL (the MVP)
Founder doesn't see the Gmail connector in Claude Desktop. Try in order:
claude mcp addGmail in Claude CODE (not Desktop — they configure connectors differently; Desktop missing it ≠ Code can't).- Fallback: a local Gmail-API draft script. Federated SSO still issues normal Google OAuth tokens — the federation problem is the LastPass CLI, NOT Google auth — so a small local script can
create_draftinto the drafts folder, routing around the connector. Ray offered to write this script ahead of time (00:01 ET) so it's ready regardless of connector outcome. Human-gated send always ([[feedback_no_autonomous_external_email]]).
Founder action list
- Try
claude mcp addfor Gmail in Claude Code (the email MVP hinges on this). - Obsidian vault — install + create when ready (he confirmed he can).
- Anthropic auth: separate Claude login for the work agent vs sharing — his call.
Decision: air-gapped / separate — CONFIRMED by founder
Founder confirmed air-gap 23:51. Rationale (still the load-bearing reason): phData is a data consultancy; client confidentiality is the business. The phData agent's context (client email, Docs) never touches Ray's vault/memory/public surfaces. The phData agent also runs a tighter leash — read + draft only, no autonomous send, no public posting, no RDCO actions.
Ray build outline (once the install gate clears) — NOT yet executed
- Substrate: Claude Code on the work machine, launched per work session (NOT a daemon). Own config/workspace, fully isolated from Ray.
- MVP integration: Gmail MCP authed to phData account →
create_draftonly; founder sends. - Later layers: Obsidian vault + own QMD index; Google Drive/Docs + Calendar MCP (phData account); comms surface TBD (Slack was MY assumption, NOT confirmed — he may just interact in the terminal/Claude session directly since it's session-based, not always-on; ASK before assuming Slack).
- Secrets: 1Password wrappers, nothing on disk ([[feedback_no_secrets_on_disk]]).
- Permissions: read + draft, human-gated send, no public surface.
Provenance note (my error, corrected)
A v0 of this plan + a 23:49 iMessage claimed the founder had "replied" with Mac-Mini/Slack/Obsidian and asked "separate-vs-aware." He had NOT replied at that point (his real answer came at 23:51). "Mac Mini / Slack" were my inventions; the truth is work-computer + channel-TBD. Logged in [[feedback_calibrate_overconfidence]] (incident #7). This v1 reflects only his actual stated requirements.
Status
Install gate CLEARED 2026-05-31 00:00 ET; constraint map captured above. Replied 00:01 ET mapping each constraint + offering to pre-build the Gmail-API draft script as the connector-independent fallback. Owed: (a) the Gmail-draft fallback script — Ray can build ahead, awaiting founder go; (b) the session-agent build once he picks connector-vs-script for email + installs Obsidian/QMD. MVP = email-draft-triage. Everything else (KB, Docs-via-filesystem, calendar) layers after. Thread founder-last (his 00:00 msg) → not parked.
Related
- [[project_channels_agent_setup]] — Ray topology (partial reference; this is session-based, not the always-on clone)
- [[feedback_no_autonomous_external_email]] — human-gated send discipline (applies to the email-draft MVP)
- [[feedback_no_secrets_on_disk]] — 1Password discipline