Vorwerk Ember / / 9 min read

Ember Agent

A persistent AI agent that acts as the project's organizational memory — maintaining context across workstreams, tools, and conversations.

Ecosystem Overview

                    ┌───────────┐        ┌───────────┐        ┌───────────┐
                    │   Igor    │        │    MAD    │        │  Julius   │
                    │ Strategy  │        │ PM+Design │        │  Client   │
                    └─────┬─────┘        └─────┬─────┘        └─────┬─────┘
                          │                    │                    │
          ┌───────────────┼────────────────────┼────────────────────┘
          │               │                    │
          ▼               ▼                    ▼
   ┌─────────────┐ ┌─────────────┐ ┌────────────────┐ ┌──────────────┐
   │  Obsidian   │ │ Claude Code │ │     Slack      │ │    Notion    │
   │   Vault     │ │  Sessions   │ │   Workspace    │ │  (MAD's PM)  │
   │             │ │             │ │                │ │              │
   │ - strategy  │ │ - analysis  │ │ - day-to-day   │ │ - tasks      │
   │ - hypotheses│ │ - synthesis │ │ - design talk  │ │ - tracking   │
   │ - research  │ │ - drafts    │ │ - decisions    │ │ - assets     │
   └──────┬──────┘ └──────┬──────┘ └───────┬────────┘ └──────┬───────┘
          │               │                │                  ╎
          │  reads daily  │  future:       │  lives in        ╎ future:
          │  + on request │  Honcho        │  channel         ╎ v1.5 MCP
          │               │  plugin        │                  ╎
          ▼               ▼                ▼                  ╎
   ┌──────────────────────────────────────────────────────────╎──────┐
   │                                                          ╎      │
   │                      Ember Agent                         ╎      │
   │                                                          ╎      │
   │  ┌─────────────────────────────────────────────────┐     ╎      │
   │  │          Honcho Memory                          │     ╎      │
   │  │       (vorwerk-ember workspace)                 │◄····╯      │
   │  │                                                 │            │
   │  │  Persistent understanding built from all        │            │
   │  │  surfaces — Slack, vault, CLI conversations.    │            │
   │  │  One memory, multiple interfaces.               │            │
   │  └─────────────────────────────────────────────────┘            │
   │                                                                 │
   │  Behaviors:                                                     │
   │  ● Listens — absorbs Slack + vault changes continuously        │
   │  ● Narrates — weekly synthesis, cross-workstream flags          │
   │  ● Responds — answers questions from anyone, via any surface    │
   │  ● Captures — writes decisions/synthesis to vault intake        │
   │                                                                 │
   └───────────────────────────┬─────────────────────────────────────┘

                               │ drafts updates
                               │ (never writes directly)

                ┌──────────────────────────────┐
                │         Google Doc           │
                │    (shared alignment         │
                │     surface — all parties)   │
                │                              │
                │  Human-authored boundary     │
                │  object. The agent can       │
                │  prepare drafts, but only    │
                │  people publish.             │
                │                              │
                │  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄  │
                │  Future: client-facing       │
                │  abstracted view from agent  │
                └──────────────────────────────┘

Legend:
  ──▶  Active in v1 (solid lines)
  ····▶  Future / planned (dotted lines)

Concept & Role

This is an experiment. We’re using this project as a learning ground for how an AI agent can support coordination across a team that works across different tools and contexts. The agent is additive — it doesn’t replace any existing communication or workflow. Nothing depends on it working perfectly. The goal is to discover where it’s genuinely useful and where it isn’t, so we can make informed decisions about using agents in future engagements.

Name: “Ember” — the agent shares the product name. It’s the project’s organizational memory.

What it is: A persistent AI agent that maintains context across workstreams and workflows, so that strategic thinking, design decisions, and operational progress stay connected — without requiring anyone to change how they work.

Core principle: curated context. The agent absorbs the full picture — strategy work, design progress, meeting decisions, Slack discussion — and surfaces what’s relevant, in the right form, in the right place. Nobody gets a raw feed of everything. Everyone gets what helps them do their part better.

Why it’s worth trying on this project: The 4-workstream structure means insights in one area (e.g., tech feasibility) can shift thinking in another (e.g., community architecture). Today, those connections depend on someone noticing them during a check-in. The agent can catch them continuously — or that’s the hypothesis we’re testing.

Capability layers (reliability-first rollout):

LayerWhatWhen
Memory & narrationMaintains project context, answers questions, posts weekly synthesisv1
Task awarenessConnects to Notion via MCP, tracks and surfaces task status alongside strategic contextv1.5 — when v1 is stable
Client-facing viewAbstracted read-only layer for Julius — key decisions, status, no working-level detailFuture

We start with memory and narration because that’s where the novel value is and it has the fewest integration points to break.

Information Architecture

The agent has three surfaces it interacts with:

┌─────────────────────────────────────────────────────────┐
│                    Ember (Agent)                         │
│                                                         │
│              Honcho Memory (dedicated                   │
│              vorwerk-ember workspace)                   │
│                                                         │
│         Persistent understanding across                 │
│         all interactions and sources                    │
└────┬──────────────────┬──────────────────┬──────────────┘
     │                  │                  │
     ▼                  ▼                  ▼
┌─────────┐     ┌──────────────┐    ┌───────────┐
│  Slack   │     │ Igor's Vault │    │    CLI    │
│ Channel  │     │  (Obsidian)  │    │  (Igor)   │
│  (Team)  │     │              │    │           │
└─────────┘     └──────────────┘    └───────────┘
  ↕ lives in       ↕ reads +           ↕ on-demand
  channel,         writes to            conversations
  absorbs +        intake              (queryable
  posts                                 memory)

Surface 1 — Slack (project channel):

Surface 2 — Igor’s Vault:

Surface 3 — CLI (Igor’s on-demand interface):

What ties it together: Honcho memory. One persistent memory layer, one dedicated workspace, no overlap with other projects. Everything the agent absorbs — Slack discussion, vault updates, CLI conversations — builds into the same understanding. When someone asks a question in Slack, the agent draws on vault context. When Igor queries via CLI, the agent draws on Slack context. The memory is the bridge.

What stays outside the agent in v1:

Cadence & Behaviors

The agent has three modes: listening, narrating, and responding.

Listening (continuous): The agent’s default state. It’s present in the Slack channel and absorbs conversation as it happens. It reads vault changes on a daily cron cycle. Everything enters Honcho memory. The agent doesn’t need to react to everything — most of what it absorbs just builds context for when it’s needed later.

Narrating (periodic): The agent proactively posts synthesis to Slack at two rhythms:

RhythmWhatWhen
Weekly narrative”Here’s what moved this week across workstreams, what shifted strategically, what’s open.” Not a status list — a short narrative that connects the dots.Tuesday evening (before Wednesday check-in)
Cross-workstream flagWhen the agent notices something in one workstream that has implications for another, it surfaces that connection. “The RAG vs. model-only decision in WS2 might affect the content architecture assumptions in WS3.”As it arises — but only when the connection is substantive, not for every minor update

The weekly narrative is the heartbeat. The cross-workstream flags are where the agent earns its keep — those are the connections that are “too expensive” to catch manually across parallel workstreams.

Responding (on demand): When someone asks. Two contexts:

In Slack (anyone on the team):

Via CLI (Igor):

What the agent doesn’t do unprompted:

Tone: The agent should feel like a well-informed colleague catching you up over coffee, not a bot generating reports. Brief, direct, opinionated about what matters but not about what to do.

Setup & Prerequisites

The access model: MAD owns the access, Igor owns the infrastructure. The agent runs on Igor’s dedicated server. MAD controls what the agent can see in their tools by granting scoped access — the same way you’d add any third-party app to Slack. Igor doesn’t need admin access or paid seats on MAD’s tools.

What MAD needs to provide (v1):

WhatWho does itHowTime
Create a Slack App in MAD’s workspaceSomeone with Slack admin rightsIgor provides the exact configuration (scopes, permissions, Socket Mode settings) — it’s a checklist to follow~10 min
Share two tokens with IgorWhoever created the appBot token and App-level token — generated during app creationPart of the above
Create/designate a project channelAnyonee.g., #vorwerk-ember1 min
Invite the bot to the channelAnyone/invite @Ember in the channel1 min

That’s it for v1. Igor handles everything else — agent configuration, memory setup, vault integration, cron scheduling.

What MAD would need to provide for v1.5 (Notion, when we get there):

WhatWho does itHow
Create a Notion integration scoped to the projectSomeone with Notion admin rightsIgor provides the setup instructions
Share the integration token with IgorWhoever created the integrationOne token, scoped to the project workspace

No Notion seat needed for Igor. The agent accesses Notion through its own integration token.

What Igor handles (all of it):

Day-to-day (once it’s running):

What nobody needs to worry about:

What Could Go Wrong (and why it’s fine)

The agent misses context. It only sees what’s in the Slack channel and the vault. Side conversations in DMs, verbal discussions, Notion updates — those are invisible to it. That’s expected. It’s additive context, not the source of truth.

The agent gets something wrong. It’s working from a smaller model with compressed memory, not from a full knowledge graph. It will occasionally misattribute a decision or miss a nuance. Correcting it in conversation improves its memory. Low stakes — nothing downstream depends on the agent being right.

The agent is noisy. If the weekly narratives or cross-workstream flags don’t feel useful, we adjust the cadence or turn them off. The listening and responding modes work independently of the narrating mode.

The agent goes down. It runs as a service on dedicated infrastructure. If it crashes, it restarts automatically. If it’s down for longer, nothing breaks — the team just doesn’t have the agent for a bit. No workflow depends on it.

Nobody uses it. That’s a valid outcome of the experiment. If the team finds it doesn’t add value, we’ve learned something useful about where agents help and where they don’t.