Assistant vs Claw

Runnable illustrations of on-behalf-of Assistants vs fixed-identity Claws

View the Project on GitHub cobusgreyling/assistant-vs-claw

Fleet Mapping

How the mock patterns in this repo map to LangSmith Fleet and the Fleet Engineering stack.

This repo LangSmith Fleet Fleet Engineering concern
TokenStore.get(user_id) Per-user OAuth + channel user mapping Identity & credentials
load_agent_credentials(...) Claw provisioning at agent creation Identity & credentials
AssistantMemory Per-user threads Identity & credentials
ClawMemory + sender Shared resource; sender is context only Identity & credentials
AssistantInbox Private per-user inbox for sensitive work Inbox / HITL
ClawInbox Editor-only review before sensitive actions ship Inbox / HITL
AuditEvent.to_dict() Cross-agent audit trail Accountability
notion_search(creds, query) Tool call scoped to principal Permissions

Assistant flow (pseudocode)

slack_user = event["user"]
user_id = fleet.map_channel_user(slack_user)  # U_ALICE → alice@co
creds = token_store.get(user_id)                # OAuth per human
pages = notion_search(creds, query)             # only that human's scope
audit.emit(principal=user_id, model="assistant", action="notion.search", ...)

Claw flow (pseudocode)

creds = agent.credentials                 # fixed at provisioning
pages = notion_search(creds, query)     # same scope for every asker
inbox.submit_if_sensitive(action, sender=event["user"])
audit.emit(principal=creds.id, model="claw", triggered_by=event["user"], ...)