The SDKs and the CLI are now released from this public repository. From @deliverd/sdk 0.26.0, the deliverd CLI 0.16.2 and deliverd 0.19.0 on PyPI, every release is built here and published by GitHub Actions with trusted publishing, so each one on npm and PyPI carries provenance linking it to the commit and workflow that built it. The Rust SDK, the .NET packages and Deliverd Screen have been released from here from the start, the Rust SDK by trusted publishing from 0.1.1. Earlier releases were published from a private repository under a single developer's account. Deliverd is growing, and as a company that supports open source it no longer made sense to keep it there: the source is now public, under the MIT licence. If a registry or a scanner shows a change of provenance or source repository at those versions, this is why.
Add human approval to any AI agent. Ask a person, wait for the answer, act on it. Start free at deliverd.dev.
2026-11-14
ดาว
—
เครื่องมือ
—
อัปไทม์
—
Your AI agent asks a person for an approval, a review, an answer or a decision,
and carries on when they respond. This repository is the source of the four
packages that do the asking:
All four are MIT. The TypeScript and Python SDKs have no runtime dependency,
the CLI has two, and the Rust SDK uses reqwest, serde and tokio rather than
writing its own HTTP client. The Deliverd service every package here talks to
is a separate, proprietary product.
Both MIT. The client needs nothing beyond .NET; the adapter adds
Microsoft.Agents.AI, and answers Agent Framework's tool approvals with a
person's decision.
Deliverd Screen: a pre-send check for every prompt
It finds personal data, secrets and your own confidential terms in text
before the text goes to an AI model, and redacts them. Everything runs on your machine,
with no account and no network call, so it works whether or not you use
Deliverd.
import { screen } from "@deliverd/screen";
const checked = await screen(prompt);
if (checked.allowed) return checked.restore(await model.generate(checked.text));
All three are MIT. The TypeScript and Python packages have no runtime
dependency, and the Rust crate's library has one, regex. They find the same
things as the SDKs, held to one set of test cases. You can plug in a model for
people's names, a CLI for pre-commit hooks and CI, and a local MCP server, and
in TypeScript a Vercel AI SDK middleware. When a person has to
decide whether something may be sent, Deliverd's Data Gate asks them and keeps
the record.
Name your organisation. The next page hands you a key: set it as
DELIVERD_API_KEY.
Ask a person. Leave approvers out and the request goes to your
organisation's owners and admins.
import { deliverd } from "@deliverd/sdk";
const decision = await deliverd.approve({ title: "Deploy to production" });
if (decision.approved) await deploy();
from deliverd import deliverd
decision = deliverd.approve(title="Deploy to production")
if decision.approved:
deploy()
npx deliverd login
npx deliverd ask "Deploy to production?" --wait
The approver gets an email and a notification, opens a page that works on a
phone, and approves, rejects with a reason, or asks your agent a question.
Every step is on the record.
Before you have an account
Development mode needs no key and no network. It prints what the approver would
have seen and answers at once:
import { Deliverd } from "@deliverd/sdk";
const deliverd = new Deliverd({ mode: "development" });
from deliverd import Deliverd
deliverd = Deliverd(mode="development")
What is here
packages/sdk: @deliverd/sdk on npm. Node 20 and up.
packages/sdk-python: deliverd on PyPI. Python
3.9 and up, standard library only, blocking or asyncio.
packages/sdk-rust: deliverd on crates.io. Rust
1.89 and up, async on tokio.
packages/sdk-dotnet: Deliverd and
Deliverd.AgentFramework on NuGet. .NET 8 and up.
packages/cli: deliverd on npm. For build steps,
pipelines, scripts and connecting your AI tools over MCP.
packages/conformance: one table of behaviour
every SDK must share: retries, idempotency, webhook signatures, durations,
gating and data screening.
Each SDK's test suite reads it, so a case added there fails in whichever
language has not implemented it.
Each package's README is the page you see on npm, PyPI or crates.io, and covers
the package in full. The developer docs
cover the API behind them.
Running the tests
pnpm install
pnpm --filter @deliverd/sdk build # release.test.ts reads dist/
pnpm vitest run
cd packages/sdk-python
PYTHONPATH=src python -m unittest discover -s tests
cd ../screen-python
PYTHONPATH=src python -m unittest discover -s tests
cd ../sdk-rust
cargo test
cd ../screen-rust
cargo test
cd ../sdk-dotnet
dotnet test Deliverd.slnx
How this repository works
The packages are developed in Deliverd's own repository, beside the API they
call, and copied here after every change. The checks that hold them to that API
and to its documentation run there, on every change, before anything arrives
here; the tests in this repository are the ones that need nothing else.
So a pull request here is not merged here. Open one anyway, or an issue: we
carry the change across, credit you in the commit, and it comes back in the
next copy. Releases are published from this repository, by GitHub Actions with
npm's, PyPI's, crates.io's and NuGet's trusted publishing, so each release on npm
carries provenance linking it to the commit and workflow that built it.
Security
Please report a vulnerability privately through the
contact page
rather than in an issue. How the service handles data is on
deliverd.dev/security.