Dev Chiniwala.
Selected workHeyClara
Engineering case studyPersistent personal agents

HeyClara.

An agent that works between conversations.

A single-process personal assistant with scheduled jobs, persistent workspaces, memory consolidation, and messaging integrations.

Engineering in brief

Constraint
Scheduled work and task context need to continue across conversations.
Decision
Use one Bun daemon with persistent workspaces, PostgreSQL state, and shared tools.
Boundary
The runtime targets one user. Long-running work needs explicit recovery behavior.
Role & ownership

Creator & maintainer · Agent daemon, channels, memory, and developer experience

Project status

Public · npm package

Technology
  • Bun
  • TypeScript
  • Claude Agent SDK
  • MCP
  • PostgreSQL

Evidence in numbers

Measured results and implementation scope are labeled separately.

Implementation scope
24documented MCP tools

Tool-server inventory in the repository README; an implementation count, not a usage metric.

View source

/ overview

A personal assistant as a background process.

HeyClara is a single-process assistant built around the Claude Agent SDK. It connects messaging surfaces with scheduled work, persistent workspaces, and memory.

The public repository and npm package make the implementation available for customization and local use.

/ problem

Useful work continues after a chat ends.

A conversational assistant can forget task state or stop when a session closes. Scheduled routines and continuing work need persistence, a runtime, and a way to report back through the channels a person already uses.

/ architecture

One daemon, shared capabilities.

Architecture overview

ONE DAEMON · SHARED CAPABILITIES

Messaging channelsTelegram · Slack · Twilio
01
Bun daemonClaude Agent SDK + MCP
02
Persistent statePostgreSQL + workspaces
03
Background workscheduled jobs + memory
04
Condensed from documented components

A Bun and TypeScript process connects the Claude Agent SDK, MCP tools, messaging channels, PostgreSQL-backed state, and scheduled jobs. Memory consolidation happens in two stages, while persistent workspaces hold ongoing task context.

  • Channels include Telegram, Slack, terminal, and Twilio voice/SMS integration.
  • A shared tool layer connects capabilities across channels.
  • The documented design targets a personal, single-user assistant.

/ Engineering decisions

Keep a personal system understandable.

The project deliberately uses one daemon rather than a fleet of services. That reduces operational complexity for a personal assistant, while making process lifecycle and recovery important design concerns.

Capabilities can be adapted through code and skills. The design favors a capable agent with tools over adding a multi-agent layer to every task.

/ challenges

Long-lived work needs durable state.

Scheduled jobs, interrupted conversations, and different messaging surfaces all need to refer to the same useful context. Persistent workspaces and memory consolidation support that continuity.

/ results

Available as source and a package.

The project exposes the daemon, integrations, scheduling, memory implementation, and a published npm entry point. The source makes the assistant’s execution and persistence paths available for inspection.

/ learnings

Autonomy starts with continuity.

A personal agent becomes useful when its runtime, memory, and communication surfaces preserve the continuity of work. Reliability still needs explicit recovery behavior and evaluation of long-running tasks.

Source record

Sources & technical context

Architecture summaries are based on the linked documentation and source. Current implementation details and limits live in the repository.

Continue exploring

ControlSurface.

Make agent failures useful.