Open source · Gen AI SDKs
Genkit and Dotprompt
A source-linked record of the SDKs, language implementations, packages, build tooling, public adoption, and the work I led across Google's Genkit and Dotprompt repositories.
Genkit is Google's open-source framework for building AI-powered and agentic applications. Dotprompt is its language-neutral prompt-as-code substrate: executable .prompt files with typed metadata, templating, tools, and model configuration.
I helped architect Genkit's Python implementation from its first workspace, founded and hired the 13-engineer team that carried it through v0.5.0, and worked across the repository until February 2026. In Dotprompt, I built the Python, Go, Java, Rust, and Dart implementations; implemented Handlebars for Rust-backed Python and pure Dart; productionized the existing TypeScript implementation; and built the Bazel and editor infrastructure around the multilingual system.
This page separates four things that are easy to blur: project reach, package downloads, public-source users, and my own contribution record. Names below are examples found in public source, not customer claims, partnership badges, or endorsements.
Evidence last verified: July 15, 2026. Registry figures carry their own measurement dates.
- 910KDotprompt downloads in the past 30 days (npm, 910,321, 15 Jun–14 Jul 2026)
- 11.4Kdotpromptz downloads in the past month (PyPI, 11,407 as of 15 Jul 2026)
- 5,045Genkit core downloads in the past month (PyPI, as of 15 Jul 2026)
- 16.6Kdownloads for the two Dart packages in 30 days (pub.dev, 8,286 dotprompt + 8,312 handlebars_dart, as of 15 Jul 2026)
- 708authored commits across the two repositories (GitHub, 383 Genkit + 325 Dotprompt)
- 372pull requests reviewed across the two repositories (GitHub, 286 Genkit + 86 Dotprompt)
The work on one slide
The work, from the public record
The contribution counts come from the repositories' author and review indexes. The implementation claims point more narrowly to the first commits, merged pull requests, release records, or current source trees that carry the work.
Genkit Python
Architecture, implementation, team, and release
| Contribution | Primary-source evidence |
|---|---|
| Python SDK bootstrap | initial workspace and implementation, PR #1682 (29 Jan 2025) |
| Architecture and contribution leadership | 383 authored commits, 286 pull requests reviewed |
| Python v0.5.0 | release published 4 Feb 2026: 178 commits and 680 changed files |
| Founding engineering team | 13 engineers across four countries; public contribution graph records the resulting work |
Dotprompt
Six runtimes, tooling, and hermetic builds
| Contribution | Primary-source evidence |
|---|---|
| Python implementation | dotpromptz and the Rust-backed Handlebars package begin in PR #22 |
| Go implementation | module bootstrap in PR #59 and the current implementation |
| Java implementation | parsers, types, helpers, stores, spec tests, and the Maven target |
| Rust implementation | dotprompt crate and Promptly CLI |
| Dart implementations | Dotprompt plus a pure-Dart Handlebars engine, PR #509 |
| TypeScript productionization | refactored parser and expanded unit tests in PR #75, portable specification tests in PR #149 |
| Cross-runtime specification | shared executable fixtures used to hold implementations to one behavior |
| Repository stewardship | 325 authored commits, 86 pull requests reviewed |
Dotprompt's multilingual fixed point
The implementations are not five unrelated ports. They converge on one shared file format and one executable specification: parse YAML frontmatter, render Handlebars templates, resolve partials and tools, and produce the same model request in every runtime. The spec/ fixtures are therefore the center of the system. Each language implementation is independently idiomatic, but it must agree on observable behavior.
Python could not use the usual LGPL-licensed pybars3 implementation inside an Apache-2.0 project, so the Python package binds the Apache-2.0 Rust Handlebars engine through PyO3. Dart lacked a suitable implementation, so the repository ships a pure-Dart Handlebars engine alongside Dotprompt itself. Java uses the JKnack engine; Go uses Raymond; Rust uses handlebars-rust. The format remains the invariant while the engine is an adapter.
Packages and public registry signals
Download counts are shown only where a registry exposes a comparable public figure. They are not summed across npm, PyPI, pub.dev, Maven, crates.io, and the Go module proxy: those systems count different events. A source or release row without a download figure means exactly that—there is a verifiable artifact, but no defensible public usage count.
Genkit Python
Published packages built through v0.5.0
| Package | Current public signal |
|---|---|
| genkit | v0.7.0 · 5,045 downloads/month |
| genkit-plugin-anthropic | v0.7.0 · 1,824 downloads/month |
| genkit-plugin-aws | v0.5.0 · 24 downloads/month |
| genkit-plugin-compat-oai | v0.7.0 · 2,101 downloads/month |
| genkit-plugin-dev-local-vectorstore | v0.5.1 · eight releases |
| genkit-plugin-evaluators | v0.7.0 · 144 downloads/month |
| genkit-plugin-firebase | v0.5.1 · 82 downloads/month |
| genkit-plugin-flask | v0.7.0 · 138 downloads/month |
| genkit-plugin-google-cloud | v0.7.0 · eight releases |
| genkit-plugin-google-genai | v0.7.0 · 2,520 downloads/month |
| genkit-plugin-ollama | v0.7.0 · 282 downloads/month |
| genkit-plugin-vertex-ai | v0.7.0 · 1,816 downloads/month |
The v0.5.0 tree also carried provider packages that did not leave a current, independently measurable PyPI record. They still belong in the implementation record, but not in a download total.
| Package | Release evidence |
|---|---|
| genkit-plugin-aws-bedrock | v0.5.0 source package |
| genkit-plugin-azure | v0.5.0 source package |
| genkit-plugin-cf-ai / genkit-plugin-cf | Cloudflare provider packages in v0.5.0 |
| genkit-plugin-deepseek | v0.5.0 source package |
| genkit-plugin-huggingface | v0.5.0 source package |
| genkit-plugin-mcp | v0.5.0 source package |
| genkit-plugin-mistral | v0.5.0 source package |
| genkit-plugin-msfoundry | v0.5.0 source package |
| genkit-plugin-observability | v0.5.0 source package |
| genkit-plugin-xai | v0.5.0 source package |
Dotprompt
Registry packages and language modules
| Package or module | Current public signal |
|---|---|
| dotprompt (TypeScript) | v1.1.2 · 910,321 npm downloads in 30 days |
| dotpromptz (Python) | v0.1.5 · 11,407 PyPI downloads/month |
| dotpromptz-handlebars (Python/Rust) | v0.1.8 · five PyPI releases |
| github.com/google/dotprompt/go | v0.2.1 tag; Go proxy resolves the module |
| com.google.dotprompt:dotprompt (Java) | v0.1.0 release tag and Maven publication target |
| dotprompt (Rust) | v0.1.0 release tag; crate source |
| dotprompt (Dart) | v0.0.1 · 8,286 pub.dev downloads/30 days |
| handlebars_dart | v0.0.1 · 8,312 pub.dev downloads/30 days |
Tooling around the format
A portable format needs more than parsers. It needs hermetic builds, syntax support, language servers, formatters, and release paths that make each implementation ordinary to use in its own ecosystem.
| Tooling | Release or source evidence |
|---|---|
| rules_dart | Bazel rules with workers, RBE, IDE aspects, and version-conflict detection |
| rules_flutter | Flutter application, toolchain, worker, and Gazelle rules |
| Vitest, Java, and Rust Bazel adapters | hermetic cross-language test and package rules |
| Promptly | cross-platform CLI and LSP for linting, formatting, testing, and publishing prompt files |
| Tree-sitter grammar | v0.1.0 release across Node, Python, Rust, and Go bindings |
| Monaco and CodeMirror | editor-language packages and Storybook demos |
| VS Code, JetBrains, Vim, and Emacs | syntax, language-service, and editor integrations with tagged releases |
The two largest Bazel efforts are rules_dart and rules_flutter: toolchain resolution, persistent workers, remote-build execution, IDE aspects, Gazelle integration, application packaging, and version-conflict detection. Smaller adapters make the shared Vitest, Java, and Rust suites participate in the same hermetic build graph. Promptly then carries the format in the other direction, from the build into the editor: lint, format, test, publish, and language-server operations over .prompt files.
Public-source use of Genkit Python
GitHub's code index returned dozens of independent public repositories containing source-level Genkit Python imports after excluding the Genkit organization, the author's own repositories, vendored virtual environments, and repository forks. Search indexes are incomplete and public code is not proof of production deployment, so the table is a representative, manually checked subset rather than a claim about total users.
Independent projects
Applications with pinned source-level imports
| Project | Where Genkit Python is used |
|---|---|
| MongoDB Partners — Leafy finance agent workshop | Genkit agent base with Google GenAI and MongoDB-backed tools |
| HEAL AI — healthcare financial assistant | RAG chat flow over insurance and billing documents |
| The Inclusive Citizen | Genkit configuration and semantic-scoring tools |
| Career Pilot | resume intelligence, job matching, document, email, and application flows |
| Publicspace AITrend | trend analysis and content-generation flows |
| PolicyIQ | AI-engine orchestration |
| Tennis Academy | AI-assisted draft service |
| ScamShield | Genkit application flows |
Reference and teaching projects
Framework integration, patterns, and course material
| Project | Evidence |
|---|---|
| Genkit samples — official Flask, FastAPI, and Django quickstarts | three Python web-framework integrations |
| Agentic UX Patterns | streaming chat, multi-tenant keys, and streaming progress with FastAPI |
| AI Agent Development Course | course agent built with Genkit Python |
What the numbers do and do not say
Dotprompt's TypeScript package is the mature distribution channel; its npm traffic is two orders of magnitude larger than the younger Python core. Genkit Python, Dotprompt's new runtime packages, and the editor/Bazel work are earlier on the adoption curve. The useful evidence today is therefore mixed: registry downloads for established packages, release and source records for new ones, and pinned imports for public applications.
The stars and forks on the shared Genkit and Dotprompt repositories describe the whole multi-language projects. They should not be relabeled as Python-only adoption. The same restraint applies to Google's statement that Genkit is used in production: the public source does not establish that those production workloads use the Python SDK.
—-
For the mechanism beneath the adoption record, Everything Is an Action dissects Genkit's architecture from source. If a public Genkit Python or Dotprompt use is missing here, I'd be glad to hear about it.