Messaging
Time to get creative. Sit down with any of your agents and pound out bad ass content that connects with your audience: social posts, outreach, internal updates, all of it. You build the plan together: what to post, when, who runs it. Approve and the rest is automatic. Items become scheduled tasks, your agent army picks them up, content gets made and shipped to your channels.
Calendar
Section titled “Calendar”The canonical schedule. Three views from the header pill: Month, Week, List. Filters above the grid: agent, status, type, channel, plus search across title, brief, draft caption, and agent notes. Click any item to open the detail drawer with the full record and any draft media rendered inline.
Items in the calendar are color-coded by status; cells get a subtle tint of the assigned agent’s color so a single glance shows who’s on what. Today gets an accent ring.
Item lifecycle
Section titled “Item lifecycle”Items move through seven statuses:
| Status | What it means |
|---|---|
draft | Captured but not approved |
scheduled | Approved and queued |
executing | A workflow is running on it |
waiting | Workflow paused (e.g., waiting on agent-generated media) |
review | Work done, your sign-off needed before publish |
published | Sent to the channel |
failed | Something broke |
Approval flow: drafts approve to scheduled; review items approve to published (or reject back to draft with an optional note for the agent). Everything else is workflow-driven.
What’s on an item
Section titled “What’s on an item”Each calendar item carries title, brief (what to say), tone (how to say it), scheduled date, owning agent, content type, and one or more channels. Once a workflow runs on it, a draft block fills in: caption, image prompt, video prompt, generated image filename, generated video filename, agent notes. Items also back-link to the brainstorm session that created them and the workflow task driving execution.
Calendar Management
Section titled “Calendar Management”Createan item from+ New Itemwith title, agent, scheduled date, and content type.Approvedrafts to schedule them; approve review items to publish.Rejectreview items back to draft with an optional note.Editany field inline from the detail drawer.Deletedrafts that aren’t going anywhere.
Brainstorm
Section titled “Brainstorm”Where the work starts. Open the brainstorm view, hit New Session, pick an agent. Name the session something you’ll recognize (“Q4 launch posts”, “weekly newsletter”) and start the conversation. Talk through goals, audience, voice, what’s on your mind. As ideas come together, the agent drops specific suggestions into the side panel: concrete items with title, date, content type, and brief.
How it works
Section titled “How it works”- You and an agent open a brainstorm session.
- The agent floats proposals as you work through the strategy.
- You approve the keepers, edit the ones close to right, reject what misses.
- Confirm the session. Approved proposals become calendar items.
- Each item moves through draft, scheduled, executing, review, and published as it gets made.
- When an item hits published, your channels deliver the content.
Every calendar item links back to the session it came from. You can always trace a published post to the conversation behind it.
What are proposals?
Section titled “What are proposals?”Each suggestion the agent floats is a proposal: a complete content idea you can act on. Title, scheduled date, owning agent, content type, channels, brief, tone. Same shape as a calendar item, just not committed yet.
Ask the agent to revise something. Make it punchier, push the date, swap the angle. They update the existing proposal in place instead of starting a new one. Even rejected proposals can come back this way. The revision history stays attached so you can see how an idea evolved.
Reviewing proposals
Section titled “Reviewing proposals”For each proposal you can:
Approveto mark it ready for the calendar.Rejectwith an optional note so the agent learns what missed and iterates.Editto take the wheel and manually tweak title, brief, scheduled date, type, or tone before approving.- Or just leave it. Staying in
proposedkeeps the proposal on the table.
Confirming the session plan
Section titled “Confirming the session plan”Once you’ve got the proposals you want, hit Confirm. Approved proposals graduate into calendar items and the session locks. Two modes:
- Default: each approved proposal becomes a
draftcalendar item. You approve again on the calendar to schedule it. - Auto-approve: each approved proposal lands as
scheduleddirectly.
Confirming flips the session to completed and disables further messages. Sessions stay searchable.
Content types
Section titled “Content types”Five seed by default: post, article, video, image, announcement. Add or rename in the messaging settings tab. The list drives the type facet on the calendar, the type select in the proposal editor, and the prompt fed to agents during brainstorm sessions.
Channels
Section titled “Channels”Channels are where published content lands. The registry lives in the Workflows plugin and ships with Discord, Slack, email, Instagram, Twitter, YouTube, and TikTok by default. Plugins can register more.
Each calendar item picks one or more channels from that registry. Channels show up as a multi-select filter on the calendar and a dropdown in the proposal editor. Or leave channels blank and delegate the delivery decision downstream.
Where it lives
Section titled “Where it lives”~/.bakin/ messaging.json # flat array of every calendar item messaging/ sessions/<id>.json # one file per brainstorm session plugin-settings/ messaging.json # content types, default view, etc.Sessions index into search (table bakin_messaging_brainstorm) so they reach across-plugin queries. Calendar items filter locally on the page rather than indexing.
Settings
Section titled “Settings”| Setting | Type | Default | What it does |
|---|---|---|---|
| Default view | select | month | Default messaging view on page load |
| Show schedule jobs | boolean | false | Display recurring schedule jobs on the content calendar |
| Channels | string | DEFAULT_CHANNEL | Comma-separated runtime channel IDs available for distribution (e.g., general,announcements,email) |
| Content types | list | Categories used across the content calendar and brainstorm proposals. |
From the CLI
Section titled “From the CLI”| Command | Purpose |
|---|---|
bakin messaging list | List messaging items |
bakin messaging get <itemId> | Get a messaging item |
bakin messaging create <title> <agent> <scheduledAt> | Create a messaging item |
bakin messaging update <itemId> | Update a messaging item |
bakin messaging delete <itemId> | Delete a messaging item |
bakin messaging approve <itemId> | Approve a messaging item |
bakin messaging reject <itemId> | Reject a messaging item |
bakin messaging sessions | List planning sessions |
bakin messaging session <sessionId> | Get a planning session |
bakin messaging session-create <agentId> | Create a planning session |
bakin messaging session-update <sessionId> | Update a planning session |
bakin messaging session-delete <sessionId> | Delete a planning session |
bakin messaging message <sessionId> <message> | Message a planning session |
bakin messaging confirm <sessionId> | Confirm planning-session proposals |
bakin messaging proposal <sessionId> <proposalId> | Update a planning-session proposal |
Full surface in the CLI reference.
HTTP API surface for this plugin: see the API reference.
For agents
Section titled “For agents”Agents drive both the calendar and brainstorm sessions through MCP exec tools.
bakin_exec_messaging_approve: Approve a messaging item (draft → scheduled, review → published)bakin_exec_messaging_create: Create a new messaging itembakin_exec_messaging_delete: Delete a messaging itembakin_exec_messaging_get: Get details for a single messaging itembakin_exec_messaging_list: List messaging items with optional filtersbakin_exec_messaging_proposal_update: Update a proposal status or fields (approve, reject, edit)bakin_exec_messaging_reject: Reject a messaging item back to draft statusbakin_exec_messaging_session_confirm: Confirm a planning session — creates messaging items from approved proposalsbakin_exec_messaging_session_create: Create a new planning session for an agentbakin_exec_messaging_session_delete: Delete a planning sessionbakin_exec_messaging_session_get: Get a planning session with full message history and proposalsbakin_exec_messaging_session_list: List planning sessions with optional filtersbakin_exec_messaging_session_message: Send a message in a planning session (non-streaming, returns full response)bakin_exec_messaging_session_update: Update a planning session title or statusbakin_exec_messaging_update: Update a messaging item
Full schemas in the Exec tools reference.