v0.6.2 · Apache-2.0

One binary.
Your entire
ops stack.

83 stdlib packages, 24 registry modules. LLM agents, FreeSWITCH/Asterisk telecom, infrastructure automation — one binary, no runtime, no ceremony.

$ curl -fsSL https://weftproject.dev/install.sh | sh
agent.weft
fn lookup(name) {
    db := db.open("sqlite:app.db")?
    db.query("SELECT * FROM users WHERE name = ?", [name])?
}

fn main -> Result {
    // the model calls your functions
    reply := llm.ask("Find user Alice", [
        llm.tool("lookup", lookup),
    ])?
    say(reply)
}

83
stdlib packages
23
registry modules
1
binary to deploy
0
runtime dependencies

What you can build

From agents to infrastructure

LLM tool calling, voice apps, data pipelines, HTTP services, and system monitoring — all in the same language, all in one binary.

LLM tool calling

Give a model your functions. It decides when to call them, you handle the results. Multi-step agents loop automatically. Works with OpenAI, Anthropic, Ollama, and vLLM.

llm.askllm.toolllm.agentmcp
fn get_weather(city) { http.get_json("https://wttr.in/$city?format=j1")? } fn main -> Result { reply := llm.ask("Weather in SF?", [ llm.tool("get_weather", get_weather), ], {"max_steps": 5})? say(reply) }

Pandas-style data wrangling

73 functions: load CSV/JSON, filter, group, join, pivot, describe. Rolling windows, shift/diff for time series. All pure Weft, no native dependencies.

dataframegroup_bypivotjoindescribe
use dataframe as df fn main -> Result { t := df.read_csv("sales.csv", null)? big := df.query(t, "revenue", ">", 10000) summary := df.group_by(big, "region", { "total": {"col": "revenue", "op": "sum"}, }) df.print_(summary, null) }

Telecom & voice agents

Build IVA systems with FreeSWITCH ESL and Asterisk ARI. Real-time STT via Deepgram, TTS via ElevenLabs. DTMF, call routing, CDR — all from Weft.

telecomFreeSWITCHDeepgramElevenLabs
use telecom fn main -> Result { esl := telecom.esl_connect(null, null, null)? telecom.esl_subscribe(esl, "CHANNEL_ANSWER")? evt := telecom.esl_recv_event(esl)? say("call answered: $evt") telecom.esl_close(esl)? }

Infrastructure automation

Health checks, rolling deploys, cert monitoring, config management, host provisioning. Like Ansible, but it's just Weft — with real error handling and no YAML.

infrahealth_checkdeploysystemdcert
use infra fn main -> Result { checks := infra.health_check_multi([ {"type": "http", "target": "https://api.example.com/health"}, {"type": "tcp", "target": "db.internal", "port": 5432}, {"type": "disk", "target": "/", "threshold": 90.0}, ])? say(infra.health_report(checks)) if checks.status != "healthy" { infra.alert("critical", "services degraded") } }
Language

Built for real work

Not a toy. Not a framework. A language that ships with everything you need to build production tools.

Result / ? errors

No try/catch. Errors propagate with ? or you handle them explicitly. Clear, composable, debuggable.

🔀

Concurrent by default

map and filter fan out automatically. spawn, channels, race, timeout — no async/await.

📦

Auto-fetch packages

use auth downloads from the registry if not installed. Grouped imports: use { "auth" "config" }.

🔒

Argon2id & PBKDF2

Native password hashing. Constant-time HMAC. Token generation. Capability-sandboxed vendor packages.

🧮

NumPy-style arrays

93 functions in warp: creation, arithmetic, trig, stats, LU-based linear algebra. Pure Weft.

🛠

Complete toolchain

build, test (--race), lint, bench (--compare), debug (DAP), profile, LSP, MCP serve, doc gen, REPL.

Standard library

83 packages, zero installs

Everything is in the binary. weft stdlib to browse.

httpwebjsonmcpdbllmfsshclisysinfoprocnetutilosdnstlscsvyamltomlxmlinicryptoretimemathenvlogpcapsocketredismongonatsamqpgraphqlemailarchivecompressencodingsecretssignalollamavllmdeepgramelevenlabsmlinfergovernorsupervisorclusterviztablestripuuidrandomdecimalbase64urlmimehtmlitercollectionspipefunctoolscopyheapbisectshlexdifflibbinstructplatformtracebackratelimitmigratemetricstokenizerdatasetwswebrtciojsonlpickleacceleratortensortest
Registry

23 modules

weft get name or just use name — auto-fetched on first import.

telecom experimental

IVA, FreeSWITCH ESL, Asterisk ARI, SIP, STT/TTS, DTMF, routing, queues, CDR

auth experimental

Argon2id hashing, HMAC, PBKDF2, token generation, OAuth helpers

router experimental

Path params, middleware chains, HEAD/OPTIONS/405, CORS

warp experimental

93-function numpy-style arrays with LU decomposition

dataframe experimental

73-function pandas-style tables with CSV/JSON I/O

config · logger · queue

Config loading, structured logging, job queue with retries

template · validate · jwt

HTML templating, data validation, JWT decode

+ 16 more →

mold, ml, tokensave, retry, cache, cron, semver, color…

Developer experience

Ship faster

Every tool you need, built in. No plugins to configure, no ecosystem to assemble.

weft runExecute scripts
weft build -o appStandalone binary
weft test --raceTests + race detector
weft bench --compareRegression tracking
weft lintStatic analysis
weft debug --dapVS Code debugger
weft lspLanguage server
weft mcp serveMCP tool server
weft docGenerate API docs
weft infoSystem report
weft outdatedCheck versions
weft gen "task"LLM writes Weft