Companion package · @carrara-labs/delta-connect

Put your agent in your chat.

A thin, always-on edge that plugs a Delta agent into Telegram. The edge holds the conversation; the agent scales to zero between messages.

01 · In the chat

What your agent can do from a message.

No app to learn. Talk to it, send it a file, or start over. The edge keeps every exchange durable, and the agent stays a full Delta underneath.

just talk

Natural, threaded chat

Message it like a person. It threads the conversation and, behind the trusted gateway, remembers what you tell it to.

send a file · new

Reads what you send

Send a photo or a document and it lands in the agent's workspace; the agent opens it with read_file and works from it. The bytes never enter a prompt.

/new · new

Start a fresh thread

Clears the current context so the next message begins a new conversation. No restart, no waiting.

/help · /id

Built-in commands

/help lists what it can do; /id returns your Telegram id for the allowlist. Both answer instantly, without spending an agent turn.

02 · How it works

A thin edge in front of a sleeping agent.

The competitors weld the chat socket to the agent, so it can never sleep. Delta splits them: the edge is the only always-on part, and the agent wakes only when a message arrives.

THE EDGEalways on
holds the socketdurable inbox + outboxauthenticates callers
a message arrives, wake the agentthe reply goes out, durably
THE AGENTscales to zero
wakes on messageone HTTP seamfull capability

// full capability while it works, near-zero cost at rest. the edge idles cheap.

at-least-once, in order

Durable by design

Every message and reply is written to a durable inbox and outbox before it moves. Nothing is lost, and replies arrive in order.

wake on message

Scales to zero

The edge is the only thing that stays up. The agent sleeps between turns and the host wakes it per message, so idle cost is near zero.

trusted gateway

Learns safely

Self-write is off by default. The edge authenticates and allowlists the caller, so a chat agent can remember what you tell it without exposure.

bring your own

Any model

Run it on a subscription, a direct API key, or OpenRouter. The agent stays a product-neutral engine; the model is just config.

03 · The durable spine

A sleeping agent can still never drop a message.

Scaling to zero only works if nothing is lost while the agent is down. The edge owns a small, durable spine so a restart mid-conversation is a recoverable event, not a dropped reply.

inbox + dedup

Accepted before awake

The edge acknowledges the platform and writes the message to a durable inbox before the agent is even up. Re-deliveries are deduped by event id, so nothing runs twice.

atomic commit

One transaction per turn

Session state, the outbound reply, and marking the message done all commit in a single transaction. A crash leaves no half-finished turn behind.

outbox + backoff

Delivered on wake

Replies queue in a durable outbox and send in strict order, honouring rate limits with backoff. A whole reply group dead-letters together rather than arriving scrambled.

message

You send a message while the agent is scaled to zero.

durable

The edge 2xx's the platform, writes it to the inbox, and wakes the agent.

delivered

The agent runs the turn; the reply leaves the outbox in order. Nothing lost.

04 · Telegram quickstart

Talk to your agent in four steps.

You need Bun, a model key, and a Telegram bot token from @BotFather. Long-poll needs no public URL, just outbound HTTPS, so it runs anywhere, even a laptop.

  1. Scaffold and configure the agent

    Create a bundle, give it a persona, then set the model and the safe chat profile.

    delta init myagent
    # edit myagent/DELTA.md (persona), then in myagent/delta.env:
    DELTA_MODEL_PRIMARY=anthropic/claude-sonnet-5   # + your provider key
    DELTA_PROFILE=chat              # chat mode: read-only tools, no code/delegation
    DELTA_REFLECT=1                 # turn on the learning loop
    DELTA_ALLOW_SELF_WRITE=1        # let it "remember" behind the trusted gateway
    DELTA_WORKSPACE=/abs/path/to/myagent   # read the persona, persist memory here
  2. Run the daemon

    Source the bundle env, then start the agent (bare delta does not read delta.env on its own).

    cd myagent && set -a && . ./delta.env && set +a && delta
  3. Start the connector

    Give it your bot token and the daemon URL, and lock it to your own chat.

    # connect/.env
    TELEGRAM_BOT_TOKEN=...          # from @BotFather
    DELTA_BASE_URL=http://127.0.0.1:8321
    ALLOWED_TELEGRAM_USER_IDS=      # your id (send /id to get it)
    
    bun start
  4. Message your bot

    Send it anything: a question, a photo, or a document, or /new to start a fresh thread. The round trip is Telegram to the edge, to the agent, and back, all durable.

A channel agent runs on the chat profile: read-only tools, no code or delegation, because raw inbound chat is untrusted. DELTA_ALLOW_SELF_WRITE=1 (off by default) is what grants the remember tool on that profile, and it is safe here because the connector authenticates and allowlists the caller before anything reaches the agent.