Both languages are entry points
Run a TypeScript application or a Python tool through the same executable and the same project configuration.
poly run app.ts · poly run tool.py
Run TypeScript or Python. Import across both ecosystems. Build and ship one executable.
// target API
import { add } from "./math.py"
with { type: "python" };
console.log(add(20, 22)); // 42
def add(left, right):
return left + right
One project, two ecosystems
Poly is building a unified module graph, dependency workflow, and release path around Bun and RustPython—without turning either language into a separate service.
Run a TypeScript application or a Python tool through the same executable and the same project configuration.
poly run app.ts · poly run tool.py
The target module system makes cross-language imports explicit, analyzable, and native to the project.
import { add } from "./math.py" with { type: "python" }
npm packages stay in Bun's ecosystem. Python packages stay locked by uv, with Poly checking what RustPython can actually run.
poly sync
The roadmap combines both module graphs, their dependencies, and project resources into one platform-native executable.
poly build app.ts
One executable. One process.
The M0 prototype embeds RustPython directly into a pinned Bun source tree. Its small synchronous bridge proves the architecture before the higher-level module system is built.
Project status
Poly is an engineering prototype. The source integration and core bridge exist today; the module system, dependency workflow, and standalone application builder remain active work.
Try the current prototype
The current build follows Bun's native toolchain requirements and may take time on a clean machine. Start with the repository guide for exact prerequisites and verified boundaries.
$ git clone https://github.com/liooil/poly
$ cd poly
$ pwsh ./scripts/bootstrap-bun.ps1 -Configuration Release