Introducing dw - the Doubleword CLI
We’ve just shipped dw, a command-line interface for running high-volume inference workflows on Doubleword.
If you’ve worked with batch APIs before, you’ll recognise the pattern:
- generate JSONL files
- upload them manually
- keep track of batch IDs
- poll for completion
- download and stitch results
It works - but it’s a lot of glue code.
dw replaces that with a single tool you run directly from your terminal - so you can run large-scale workloads without building and maintaining your own batch infrastructure.
What you can do with it
At its core, dw lets you manage the full lifecycle of async inference.
Prepare your data locally
Validate, inspect, and manipulate JSONL files before uploading:
- check formatting
- estimate tokens + cost
- sample or transform datasets
Run batches end-to-end
dw batches run batch.jsonl --watch
Upload → create → monitor → download results in one step.
You can still break this into individual steps if you want more control.
Stream results as they complete
No need to wait for the full job - results flow back as they’re processed.
Track cost and usage
dw batches analytics <batch-id>
Run quick one-off calls
dw realtime <model> "your prompt"
Projects for multi-step workflows
For more complex workloads, dw includes a project system.
You can define and run full pipelines - evals, synthetic data generation, document processing — end-to-end:
dw project init my-project
dw project run-all
Each project is defined in a simple dw.toml, so you don’t need to rebuild orchestration logic every time.
You can also clone example workbooks and run them immediately:
dw examples clone model-evals
dw project run-all
Why we built it
Most workloads on Doubleword aren’t real-time:
- eval pipelines
- dataset generation
- large-scale document processing
- async agent tasks
They’re high-volume, multi-step, and usually held together with scripts.
At the same time, these are exactly the workloads where running in batch matters - you can get the same model outputs at significantly lower cost by trading latency for throughput.
Doubleword is built for this “bulk mode” of inference: run large jobs asynchronously, choose when results arrive, and pay batch-level pricing instead of real-time rates.
The CLI is a way to make those workflows feel native - not something you have to build infrastructure around.
Get started
Install:
curl -fsSL https://raw.githubusercontent.com/doublewordai/dw/main/install.sh | sh
Or via pip:
pip install --user dw-cli
Then:
dw login
dw models list
Full docs (commands, file tools, projects, examples) are available in the repo.
Give it a try
If you’re already running evals, dataset generation, or async agent workflows, this should give you a much simpler way to run them - with the cost benefits of batch built in.


