Tap to talk

Describe it. Hand it off. It runs.Hand off Gmail.

You describe a recurring chore in a sentence. It becomes a scheduled workflow on the Strands Agents SDK that runs unattended and stops to ask you only about the things it genuinely cannot judge. Your answer becomes a rule, so it asks less next time.

Open source · Apache-2.0 Strands Agents SDK Runs on Amazon Bedrock ★ GitHub

Set up in one command.

Python 3.12 and a terminal. The whole loop runs offline first — no keys, no account — then you add one key and it thinks for real.

01

Clone and install

The extras add the Groq provider, the native window and a credential-free web-fetch server.

$git clone https://github.com/LSUDOKO/Handoff && cd Handoff
$python3.12 -m venv .venv && source .venv/bin/activate
$pip install -e ".[dev,groq,desktop,web]"
02

Configure and check

The defaults run offline. Every line doctor prints is the result of a real call, with the fix beside any failure.

$cp .env.example .env
$handoff doctor
03

Run it

The demo is the whole loop on a scripted model: it works the inbox, asks about three items, and on the second run asks about none.

$make demo
$handoff serve

Then open http://localhost:8000, press Run now, and watch the feed.

Handoff
for

  • Every weekday at eight: real asks from teammates become Linear tickets, newsletters get archived, your manager gets a draft reply. It asks about the one email it cannot place — and the next morning, it doesn't.

  • Open pull requests you were asked to review. Small, well-described ones from teammates get a first-pass comment drafted; anything touching auth, billing or migrations is flagged to you before a word is left.

  • Every Monday it reads the pricing page through a credential-free fetch server. Nothing moved, nothing said. Something moved, a summary lands in #competitive-intel — and it asks before posting anything that reads as a strategic call.

  • After a meeting ends: pull the commitments out of the notes, file yours as tickets, draft a short recap to attendees. Anything going to people outside the company waits for you.

  • Custom agents with allow-listed tools and skills, runnable from a workbench with a credential preflight. MCP servers you can probe and call live. A run inspector with every model turn, every tool call and its cost.

  • Describe the chore in a sentence. The trigger, the integrations and the line between what it may do alone and what it must ask about are written for you, as a config you can read and version.

A decision. Not a notification.

Unsure items are set aside, not interrupted on. When the pass is done it asks about all of them at once: the item, why it stopped, how sure it was against the threshold, and the options. Answer on the screen, in chat, out loud, or from a terminal — the run picks up where it left off.

The workspace overview: latest runs, workflows, and what is waiting on you
overview
Activity: pending decisions across workspaces, answerable inline
activity
The decision screen: the item, the agent's reasoning, and the confidence gauge against the threshold
decision
Chat: a persisted Strands session that operates the workspace and builds workflows
chat
The run inspector: a waterfall of every model turn and tool call, with cost
inspector
The agent workbench: run any agent on a prompt, with result, tool calls and trace
agents
Tool servers: the MCP catalogue with a live tool invoker
tool servers
The workspace overview in the dark theme
overview · dark
activity
decision

Works with the tools you already have, over MCP where one exists.

Gmail
Linear
Slack
GitHub
Amazon Bedrock
AgentCore
Strands
MCP

Hand it off.

One sentence, one schedule, one screen when it needs you. Runs on your machine, in a desktop window, or on Amazon Bedrock AgentCore. Open source under Apache-2.0.