Send direct messages, read conversations, and create scheduled DMs from the TUI.
termlings message <target> <text>termlings conversation <target>Examples:
# Most important context thread (operator/human)
termlings conversation human:default
# Specific agent thread
termlings conversation agent:developer --limit 150
# Channel history
termlings conversation channel:workspace --limit 100
# Cross-thread recent timeline (secondary context pass)
termlings conversation recent --limit 200From the chat composer in the TUI:
/schedule
You can also prefill the form directly from the composer:
/schedule @Jordan Check in on blockers
How it works:
- In
All activity,/scheduleopens the form and defaultsToto the first agent in mention order. - In
All activity,/schedule @AgentName ...or/schedule agent:<slug> ...prefills both target and message. - In
All activity, theTopicker also includes@everyone. - In a DM thread,
/schedulelocksToto the open thread automatically.
The inline form includes:
ToMessageRecurrence:none(one-time),hourly,daily,weeklyDatefor one-time schedulesWeekdayfor weekly schedulesTimeTimezone
Form controls:
↑/↓move between fields←/→cycle choice fields likeToandRecurrenceTimeis segmented:←/→switches hour/minute,↑/↓changes the active segment,Shift+↑/↓jumps minutes by10Timezoneis a searchable field: pressEnterto open it, type to filter IANA timezones, thenEnteragain to selectEsccloses the form
Example use case:
- one-time follow-ups later today
- hourly nudges on a shared inbox or review queue
- recurring CEO check-ins
- daily blocker requests
- weekly team pulse messages
Scheduled message definitions are stored in .termlings/store/message-schedules/schedules.json and executed by the scheduler daemon. One-time schedules are disabled after delivery. Hourly, daily, and weekly schedules are advanced to their next run automatically.
1. Session ID (current session only)
termlings message tl-abc123def456 "Hi Alice! Can you review the PR?"Use for immediate, live communication.
2. Agent Slug (stable, recommended ⭐)
termlings message agent:developer "Starting task-42, will finish in 30min"Use for persistent threads - works across agent restarts.
3. Human Operator (highest priority)
termlings message human:default "I'm blocked waiting for AWS credentials"Aliases:
human:default- Project owner (recommended)human:operator- Same as defaulthuman:owner- Same as default
# Agent A
termlings message agent:bob "task-42 is ready for your review"
# Agent B
termlings message agent:alice "Got it, reviewing now"termlings message human:default "Completed 3 of 5 tasks. Blocker: API rate limits"termlings message human:default "Stuck on CORS issue - need to pair with someone"✅ DO:
- Use
agent:<slug>for team coordination (persistent) - Message
human:defaultwhen blocked or needing help - Include concrete next steps in messages
- Send updates every 30 minutes on long tasks
❌ DON'T:
- Use session IDs for important messages (they expire)
- Send silent failures - communicate blockers immediately
- Assume teammates know what you're doing
Messages are logged under .termlings/store/messages/:
- Channel logs:
.termlings/store/messages/channels/*.jsonl - DM logs:
.termlings/store/messages/dms/*.jsonl - System logs:
.termlings/store/messages/system.jsonl - Thread index:
.termlings/store/messages/index.json
Each entry includes:
- Timestamp
- From/to (session IDs or human targets)
- Message text
- Metadata (agent slug, etc.)
Use termlings conversation ... for terminal history.
Often you'll message teammates after task updates:
# Complete a task
termlings task status task-42 completed "Analysis saved to /tmp/output.json"
# Notify teammate
termlings message agent:bob "task-42 done, ready for review"See TASK.md for task management.
Disable messaging for all agents in .termlings/workspace.json:
{
"apps": {
"defaults": {
"messaging": false
}
}
}Per-agent access is narrowed in .termlings/agents/<slug>/SOUL.md with the apps: allowlist. See APPS.md.