Drift
An intent-based language for agentic systems. Write your agent in English-shaped blocks, run it as async Python.
agent GrantChecker {
model: "claude-haiku"
budget: $0.10 per run
step assess(application: string) -> Decision {
let summary = summarize the application as string
let score = score eligibility from 1 to 10 as int
if confident<score> {
return Decision { approved: score > 7, summary: summary }
} else {
escalate to human review
}
}
}
That's a full agent — model choice, budget, an intent verb (summarize), confidence-gated branching, structured return. The transpiler turns it into async Python that runs on Drift's thin runtime.
Install
pip install drift-lang
Optional extras:
pip install "drift-lang[mcp]" # MCP tool support
pip install "drift-lang[dendric]" # Dendric memory backend
pip install "drift-lang[all]"
30 seconds to your first agent
drift new hello
cd hello
drift run hello.drift --input '{"name":"Riley"}'
No API key required — Drift falls back to a mock provider so you see something work immediately. Drop an ANTHROPIC_API_KEY or OPENAI_API_KEY into .env to use a real model.
CLI
drift new <name> Scaffold a starter project
drift run <file.drift> Transpile and execute
drift check <file.drift> Validate syntax
drift transpile <file> Emit Python (use -o to write to a file)
drift lex / parse Debug tooling
What's in the language
agent— top-level unit. Hasmodel,budget,state,memory, andsteps.step— typed sub-procedure. Body is a sequence of declarative statements.- Intent verbs —
summarize,extract,classify,translate,match,generate, etc. Each one becomes a typed LLM call. confident<T>— confidence-gated branching. Run the cheap path when sure, escalate when not.model { … }— multi-provider routing withprefer,fallback,upgrade when confidence < 0.7, andstream "fast" then "slow".tool name from python|mcp|rest— declare external tools. MCP runs against the official SDK.pipeline— composable flow with->,=>,~>,|>operators.for each x in xs parallel—asyncio.gatherunderneath.attempt / recover— structured error handling with retry, fail, and named arms.memory— short-term scratchpad or durable backend (Dendric).remember,recall,deja_vu,forget.define verb— extend the intent vocabulary with your own typed verbs.- Cross-agent calls —
OtherAgent.step(args)just works.
Docs
| File | For |
|---|---|
LLM.md |
Coding agents (Claude, Cursor, Copilot) — complete reference for one-shot loading |
docs/language.md |
Humans learning Drift |
docs/cookbook.md |
Copy-paste patterns |
docs/gotchas.md |
Common mistakes |
Examples
See examples/ for working .drift programs and their generated Python:
hello.drift— minimal agentconfident_demo.drift—confident<T>branchinggrant_checker.drift— end-to-end intent + structured returninbox_sorter.drift—for each … paralleltriagegrant_checker_with_memory.drift— Dendric-backed long-term memory
Status
Alpha — language surface is stable, runtime works, 344/344 tests passing. Voice primitives parse but adapters aren't wired yet. Type system beyond confident<T> is on the roadmap.
License
MIT
Metadata
Release files for drift-lang 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| drift_lang-0.1.0.tar.gz | 72.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| drift_lang-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 149.4 kB
Release files / drift_lang-0.1.0.tar.gz
| Download URL | drift_lang-0.1.0.tar.gz |
|---|---|
| Size | 72.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fe76a4f166d9f5348885d20e165730e165d73e9453118792e3e8f3cbc0f1fcf2
|
|
BLAKE2b-256 checksum How to use checksums |
229b64bf0a7cc159531a78b8467b08d4bca3619791db66856f7bf7ed08ba31d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|
Release files / drift_lang-0.1.0-py3-none-any.whl
| Download URL | drift_lang-0.1.0-py3-none-any.whl |
|---|---|
| Size | 76.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a3db9eb6949a969c04f9b223de155663da9aabb9d7f47674c82a138c302b43ff
|
|
BLAKE2b-256 checksum How to use checksums |
a5a3af75cbb1745533c9ead5f7e0ff048bc5393bcf7169a0a5f81d1f06c2a53e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|