hraness
Theme
Appearance

01 · pack

Relationships

by hraness · drafted with ai assistance

Diagram of RelationshipsPeopleBladeTextButlerGhostGetALGALExcalibur (xcb)SoulscrapeLifechartsconnectsoperatessharesevolvesroutesdelegatesDiagram of RelationshipsPeopleBladeTextButlerGhostGetALGALExcalibur (xcb)SoulscrapeLifechartsconnectsoperatessharesevolvesroutesdelegates
  • 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 brings together contacts, messages, dossiers, and life timelines. PeopleBlade is the contact book, TextButler answers messages, and GhostGet lets both reach signed-in apps without holding a password. Soulscrape builds a dossier from sources you can use, and Lifecharts lays out the chapters of a life. These products serve different parts of keeping track of people; the connections below describe the tools that work together.

Products

PeopleBlade

PeopleBlade brings your contacts from Apple Contacts, iMessage, Google Contacts, WhatsApp, LinkedIn, and more into one private book on your computer. Keep notes beside each person, and let your agent search the book from the command line.

The book is a SQLite file. Imports include 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

TextButler is an AI butler for the iMessage, WhatsApp, and Beeper chats you choose on your Mac. Turn it on for a conversation to draft or send replies using your shared history.

It is in development and built from source. One-to-one iMessage chats support reviewed or automatic replies; WhatsApp and Beeper are untested or text-only. It replies 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

GhostGet gives the agent you already use a fixed list of reviewed web actions: read a page, save one media item, or act in a connected account. Your agent never sees your credentials and never steers a browser.

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.

Soulscrape

Soulscrape is a free agent skill that writes a dated dossier on how a person decides, writes, argues, and changes their mind, with every claim tied to its sources. Keep it private, or publish it.

Lifecharts

Lifecharts is a free life timeline maker. Add the chapters of your life, like a city, a school, a job, or a relationship, by hand or with your agent, and share the result.

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.