Do is a scripting language for cross-platform CI/CD, DevOps, and automation. It combines shell-like commands and indentation-oriented data declaration with ordinary functions, structured concurrency, and remote-capable system APIs.
⚠️ Experimental: Do is early and still taking shape — syntax, the standard library, and APIs are all subject to change, and it's not ready for production workloads. If the ideas below interest you, this is a good time to poke around, try things out, and weigh in.
The interpreter stays local while a VFS context selects where system work happens. The same function can operate on the local system, a container, an SSH host, across WSL, or with administrator privileges. Filesystem access, external programs, environment variables, system information, and security queries follow the selected target — you don't write a different version of the function for "local" versus "remote."
VFS contexts compose, so the same model supports paths such as local → SSH host → container. APIs that are not VFS-aware continue to run in the interpreter process.
- Structured concurrency: cancellation, channels, pipelines, and scoped resources.
- Work with Windows paths, access tokens, SIDs, ACLs, security descriptors, and native error codes alongside Unix identities and error codes.
- Styled terminal output and progress displays.
- Editor support: LSP server, Vim syntax definition, and a VS Code extension
(build from source in
dolang-code/; not yet on the Marketplace). - Runs on Linux, macOS, Windows, and FreeBSD.
- Automation and system integration: processes, filesystems, containers, SSH, WSL, privilege elevation, argument parsing, systemd, XDG, progress, and terminal output.
- Data and protocols: HTTP, URLs, JSON, TOML, YAML, XML, SQLite, regex, base64, digests, zip, globbing, patches, and shell quoting.
- Concurrency: strands, cancellation, channels, pipelines, streams, and scoped resources.
- Tooling: compiler APIs, dynamic loading, the REPL, LSP, and VS Code extension.
Install a bootstrap archive or build from source by following
BUILD.md. Once installed, run the shell or an example:
dolang
dolang example/cow.dolSee the Language Guide or follow the command-line tool example.
Do builds on a lot of excellent Rust ecosystem work.
- Vendored code:
hashbrown - Implementation inspiration:
vint64by Tony Arcieri;tiny-sort-rsby Lukas Bergdoll - Major building blocks:
tokio,reqwest,sqlite-plugin,libsqlite3-sys,linkme,annotate-snippets,tower-lsp
Thanks to the authors and maintainers of these projects.
Do is available under either of:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.


