Free · open source
GPLv3, royalty-free or commercial — your choice$0forever
- Six platforms from one YAML
- Review markers and verify
- CI-safe dump, diff and --check
One bindsmith.yaml, six Flutter platforms — Dart bindings for native APIs on Android, iOS, macOS, Windows, Linux and Web.
dart run bindsmith doctor

See it run
$ dart run bindsmith init $ dart run bindsmith generate $ dart run bindsmith verify $ dart run bindsmith dump > api.json $ dart run bindsmith diff api.json $ dart run bindsmith generate --check
Overview
One bindsmith.yaml, six Flutter platforms. bindsmith generates Dart bindings for native APIs on
Android, iOS, macOS, Windows, Linux and Web by driving the official generators through their
library APIs (ffigen, swiftgen, jnigen, winmd, dart-dbus), with a TypeScript .d.ts driver for
Web, a unified IR with fixup passes, and review markers for everything that could not be mapped.
bindsmith is a work in progress: the drivers, the IR, the passes and the emitters are in place, and the command line generates for the C and Objective-C drivers so far.
Features
Android, iOS, macOS, Windows, Linux and Web from one bindsmith.yaml, checked against a JSON Schema in your editor.
ffigen, swiftgen, jnigen, winmd and dart-dbus, driven through their library APIs, plus a .d.ts driver for Web.
Every driver feeds one model; fixup passes shape the API you ship.
@BindsmithVerify marks what could not be mapped, and verify exits 1 while anything is unresolved.
resolve pins every native dependency in bindsmith.lock with sha256 sums; --offline resolves from the cache only.
dump, diff, explain and generate --check write nothing into your project.
Install
Add the generator and the runtime to your package:
dev_dependencies:
bindsmith: ^0.1.0
dependencies:
bindsmith_runtime: ^0.1.0
Then check what this machine is missing:
dart run bindsmith doctor
Write a starter config, generate, and see what still needs a human.
dart run bindsmith init
dart run bindsmith generate
dart run bindsmith verify
More examples below.
Usage examples
In CI, fail when the native API moved or the checked-in output is stale.
dart run bindsmith dump > api.json
dart run bindsmith diff api.json
dart run bindsmith generate --check
Links
You can use bindsmith under any of the following licenses, at your choice:
Pricing
Pro is a placeholder$0forever
$9 / moper seat
Placeholder — the Pro waitlist is not open yet.
Free and open source. Star it, file an issue, or send a pull request.