Ghostty — Your Always-On Digital Self
Ghostty is an always-on AI proxy that acts as you when you're unavailable. It watches your channels, learns your voice, drafts replies, and escalates intelligently.
Core Loop
1. MONITOR → Spawn sub-agents watching email, calendar, Slack, WhatsApp
2. LEARN → Build voice profile from your sent messages (ongoing)
3. DRAFT → When meaningful event detected, draft reply in YOUR voice
4. ROUTE → Send via the right channel (urgent → WhatsApp, formal → email)
5. ESCALATE → Only interrupt you when it truly matters
Step 1 — First Time Setup: Build Your Voice Profile
Before Ghostty can draft as you, it needs to learn your style. Run the profile builder:
scripts/profile_builder.py --source <email-folder or messages-export> --output ghostty/voice-profile.md
The builder analyzes:
- Average sentence length and structure
- Common phrases and fillers
- Greeting and sign-off patterns
- Formality level (1-10)
- Preferred punctuation style
- Tone indicators (confident, warm, terse, etc.)
Store the profile at ghostty/voice-profile.md in your workspace. Update it monthly as your style evolves.
Step 2 — Set Up Channel Monitors
Spawn a persistent sub-agent for each channel you want Ghostty to watch. Use mode="session" so they run continuously.
Email (Gmail/Outlook):
sessions_spawn(
task="You monitor the email inbox for important messages.
Rules: (1) Only act on emails from people in the PRIORITY_SENDERS list in ghostty/config.md,
(2) For each important email, draft a reply using the voice profile at ghostty/voice-profile.md,
(3) Send the draft to the escalation channel (WhatsApp/Signal) with [APPROVE] prefix for one-click send,
(4) Mark as TODO in ghostty/pending-drafts.md
Run continuously. Check every 15 minutes.",
runtime="subagent",
mode="session",
label="ghostty-email"
)
WhatsApp/Signal:
sessions_spawn(
task="You monitor WhatsApp messages.
Rules: (1) Only respond to DND-mode messages or explicit @ghostty mentions,
(2) Draft replies using voice profile at ghostty/voice-profile.md,
(3) If sender is in PRIORITY_SENDERS, send directly. Otherwise queue for approval.
Run continuously.",
runtime="subagent",
mode="session",
label="ghostty-whatsapp"
)
Calendar:
sessions_spawn(
task="You monitor the Google Calendar / Outlook calendar.
Rules: (1) Alert via WhatsApp 1 hour before any calendar event,
(2) If a meeting is about to start and you haven't joined, alert again,
(3) If someone invites you to a meeting and you're not available (based on ghostty/availability.md), draft a polite decline using your voice profile.
Run continuously.",
runtime="subagent",
mode="session",
label="ghostty-calendar"
)
Step 3 — Escalation Rules
Edit ghostty/config.md to define:
PRIORITY_SENDERS— list of people who always get a responseURGENT_KEYWORDS— words that trigger immediate WhatsApp alertIGNORE_SENDERS— newsletters, bots, noise to skipRESPONSE_WINDOW_MINUTES— how long before drafting (default: 60)APPROVAL_CHANNEL— where to send drafts for approval (default: WhatsApp)
Step 4 — Drafting in Your Voice
When a monitor detects something worth responding to:
1. Read ghostty/voice-profile.md — get style params
2. Read ghostty/config.md — get context (relationship, ongoing projects, preferences)
3. Fetch the incoming message — understand what it's about
4. Draft reply — apply voice profile (tone, length, phrases, formality)
5. If sender is PRIORITY — send directly
6. If not — queue to ghostty/pending-drafts.md and send preview to WhatsApp
Voice drafting rules:
- Short replies: aim for same length as you typically write
- Matching tone: if you use "Hey mate" don't use "Dear Sir"
- Reference context: mention anything ongoing (projects, prior emails)
- Signature: include your sign-off style from the voice profile
Step 5 — One-Click Approval
When a draft is sent to WhatsApp:
[Ghostty] Reply to John re: Q4 proposal
Hey John, yeah happy to jump on Tuesday — 3pm works from my end.
I'll send over the deck beforehand so we can dive straight in.
[APPROVE to send] [EDIT then send] [SKIP]
Respond with "APPROVE" on WhatsApp → Ghostty sends the email/WhatsApp reply.
File Structure
ghostty/
├── voice-profile.md # Your style fingerprint — generated by profile_builder.py
├── config.md # Priority senders, keywords, escalation rules
├── availability.md # When you're reachable, timezone, DND hours
├── pending-drafts.md # Queue of drafts awaiting approval
└── sent-log.md # History of what Ghostty sent on your behalf
Reference Files
references/voice-profile.md— detailed voice profiling methodologyreferences/channel-monitors.md— channel-specific setup (Gmail, WhatsApp, Calendar, Slack)references/draft-engine.md— how to draft contextually in your voicereferences/delivery-router.md— escalation logic, urgency routing, approval flowsscripts/profile_builder.py— analyze sample messages, output voice profile markdown
Safety
- Ghostty never sends without approval UNLESS the sender is in PRIORITY_SENDERS
- All sent drafts are logged in
ghostty/sent-log.md - DND hours from
ghostty/availability.mdare respected — no pings during sleep hours - Review
ghostty/pending-drafts.mdat least once daily