Engineering

9 posts in this category.

Engineering · 11 min

What an agent needs after it works

Every framework can produce a working demo. The hard part is everything after — running on a schedule, getting better at the same task, and not billing you while idle. Three operational primitives that close the gap, and why the framework — not the user — should own them.

Chihab
Engineering · 9 min

Inbox: every channel, one agent

v0.25 lands inbound messaging on five platforms at once — Telegram, Slack, Discord, email, WhatsApp. The hard part wasn't writing five adapters. It was finding the one shape that made all five behave like the same thing.

Chihab
Engineering · 8 min

Smart routing: picking the cheapest model that can still do the job

Most agent turns don't need Opus. The problem is figuring out which ones do — at runtime, before you've spent the money. Here's how Tutti's SmartProvider does it, what we got wrong on the first try, and where it still falls short.

Chihab
Engineering · 5 min

OpenTelemetry on day one: every step is a span

If you can't explain what an agent did six hours after it did it, you can't operate it. Tutti emits OTEL spans for every run, LLM call, and tool invocation — and you wire it into whatever you already use.

Chihab
Engineering · 6 min

HITL gating destructive tools by default, not opt-in

Most frameworks make human-in-the-loop something you wire in. By the time you remember to add it, the agent has already shipped a tweet. Tutti gates destructive operations by default — the wiring is the runtime.

Chihab
Engineering · 7 min

Prompt injection is an architecture problem, not a UX one

If you wait until the model has seen the malicious string, you've already lost. The defence has to be in the architecture: typed tool outputs, sanitised content, boundary markers, runtime isolation.

Chihab
Engineering · 5 min

Permission scopes the runtime actually enforces

Most frameworks document a permission model. Tutti enforces one. The difference is the runtime refuses to start when an agent has voices it didn't grant.

Chihab
Engineering · 6 min

Voices: the plugin model agent frameworks need

Most frameworks treat tools as a flat list. Every team rebuilds the same GitHub wrapper, the same Slack wrapper, the same Stripe wrapper. Voices are how Tutti stops that.

Chihab
Engineering · 7 min

Configuration over code: why score files beat Python graphs

Agent systems aren't general programs. They're a small set of repeating patterns. When you write them as code, the configuration disappears. When you write them as config, the system shape is the file.

Chihab