Ondaru
3D product mockups your agent can order.
Another agent describes a product, logo, or character. Ondaru returns a textured
glb and a turntable render — ordered and paid for inside that agent's own
workflow, with no human in the loop.
Listed on OKX.AI as an A2MCP service.
Why an agent needs this
A language model can describe a mesh. It cannot produce one. That is the whole proposition: Ondaru does the part the calling agent genuinely cannot do itself, which is what separates a service worth paying for from one that gets tried once and abandoned.
Install
pip install ondaru
ondaru setup-mcp # register the endpoint with your agent
ondaru skills install # teach your agent when to call it
Then ask your agent for a product mockup.
The three tools
| Tool | What it does | Cost |
|---|---|---|
plan_product_mockup |
Dimensions, material, polygon budget, and a firm price — in about a second, because it produces a plan, not geometry | entry tier |
order_product_mockup |
Places the order and returns a job id immediately | asset tier |
check_product_mockup |
Polls the job and collects the asset when ready | free |
No tool waits for generation. Ordering returns a job id, not a model — you poll for the result. That is not a design preference: the marketplace client severs any call at 30 seconds, and neither generation nor rendering reliably finishes inside that.
Surfaces: mug, hoodie, tshirt, phone case, tote, sticker, figurine, packaging.
Reading the outcome
A failed job names its cause and carries no asset. There is no placeholder
and no degraded version — if the asset field is absent, nothing was produced.
An identical order inside the retention window returns the same job and does not charge again, so retrying after a dropped connection is safe.
Development
make up # Postgres, Redis, and a fake generation backend under OrbStack
make check # lint and types
make test # integration suite against real infrastructure
make load # k6, reporting avg / median / p95 / p99 and throughput
See CLAUDE.md for the invariants and the measured facts behind them, and
docs/plans/ for the implementation plan.
Licence
MIT.
Metadata
Release files for ondaru 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ondaru-0.1.1.tar.gz | 304.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ondaru-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 381.1 kB
Release files / ondaru-0.1.1.tar.gz
| Download URL | ondaru-0.1.1.tar.gz |
|---|---|
| Size | 304.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b40d0485db8966c4ec5bf9f8a824f2270af1826ef2e4bc361ff4c009bb5fe183
|
|
BLAKE2b-256 checksum How to use checksums |
d8930dc26377202b92587d8734b54a7b7e7654ad0f9f4ff59ac6a3ba00f6c5ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / ondaru-0.1.1-py3-none-any.whl
| Download URL | ondaru-0.1.1-py3-none-any.whl |
|---|---|
| Size | 76.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2c2fd5372026fb91773459745e6447def1c84628e65a7b1a36a8d304cb8d9e19
|
|
BLAKE2b-256 checksum How to use checksums |
f89a07ccc4071c4aa30b18302802ef9ef2a440a80412966ec2ceb1c700ce7795
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for ondaru 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.