- PeopleBlade to GhostGet, connects
- TextButler to GhostGet, operates
- PeopleBlade to TextButler, shares
- TextButler to ALGAL, evolves
- TextButler to Excalibur (xcb), routes
- ALGAL to Excalibur (xcb), delegates
shipped from another pack
The Relationships pack keeps your contacts and conversations on your own computer. PeopleBlade is the contact book, TextButler answers messages, and GhostGet lets both reach signed-in apps without holding a password. It is for someone whose contacts and conversations are spread across iMessage, WhatsApp, Beeper, Google, and LinkedIn, and who wants an agent to help with them without handing it the accounts.
Products
PeopleBlade
A local personal CRM: one private SQLite contact book on your computer, run from the command line by you or your agent. It imports Apple Contacts, iMessage, Google Contacts, Beeper, and WhatsApp, plus LinkedIn, Instagram, and X data exports, and every detail keeps the source it came from. An exact email or phone match joins two records when you accept it or run an opt-in pass for exact matches, and a shared name alone never does. More than 100 commands print JSON, and the CLI is free and MIT licensed.
TextButler
A local message assistant for macOS, in development and built from source, for the one-to-one iMessage chats you choose (WhatsApp and Beeper are untested or text-only), with reviewed or automatic replies. It replies as a clearly marked butler, and only when a contact says “butler.” Each conversation you enroll gets its own habitat, so two threads with the same person keep separate styles. A habitat learns a tone, a formality level, and a response strategy; it can never grant tools or change the recipient or provider. The fast path makes one call to Qwen 3.5 Flash through a Vercel AI Gateway key, with reasoning off and spending capped at $1 a day, or to a local qwen3:4b through Ollama.
GhostGet
Gives an agent a fixed list of reviewed web actions. GhostGet holds no password: password and passkey sign-in stay in the system browser, and raw secrets never enter the agent protocol. A grant binds the exact account, manifest, and executable, so changing any of them invalidates it. The public web gateway allows only HTTPS GET and HEAD, pins DNS, and rejects redirects and private addresses.
Built on
ALGAL is a programming language and virtual machine for agent programs that wait for approval, resume after a crash, and replay from a record of each step. Excalibur (xcb) routes model work across the Claude, Codex, and Devin subscriptions you already pay for. Both belong to Tools for Token Maximalists.
How they connect
PeopleBlade → GhostGet: connects
PeopleBlade’s live Google, Beeper, and WhatsApp imports, its LinkedIn contact-info read, and its GitHub and Bluesky profile checks all run through GhostGet. The contact book reads signed-in sources without ever storing a credential, and its imports keep no message text.
TextButler → GhostGet: operates
Messages reach TextButler through GhostGet, a separate Mac tool installed first. Beeper chats on Signal, Telegram, and Instagram arrive through GhostGet’s text automation adapter.
PeopleBlade → TextButler: shares
The private message-bundle format comes from TextButler’s package. PeopleBlade bundles that package, and GhostGet’s Beeper and WhatsApp exporters write the same format, so one export reads the same way in the contact book and in the assistant.
TextButler → ALGAL: evolves
Each habitat’s reply, reflection, and judge programs compile to ordinary replayable ALGAL programs. A candidate plan replaces the current one only if it wins a blinded replay on two saved cases, by an average of at least 0.1, with no case scoring lower, and staying silent cannot raise its score. Evolution changes the plan and never the model, and a new plan takes over only after it wins the replay. Per-contact memory is capped at 64 excerpts of 1 KiB each.
TextButler → Excalibur (xcb): routes
TextButler drafts AI replies through xcb’s application interface, so a reply can sign in through xcb and use a subscription its owner already has. xcb’s application API guide uses TextButler as its example.
ALGAL → Excalibur (xcb): delegates
When an ALGAL program needs coding work, its xcb executor runs xcb as a subprocess. ALGAL never copies credentials or reimplements account switching; both stay in xcb.