{"id":26701864,"url":"https://github.com/pytauri/pytauri","last_synced_at":"2026-03-09T09:01:47.743Z","repository":{"id":258272184,"uuid":"873703477","full_name":"pytauri/pytauri","owner":"pytauri","description":"Tauri binding for Python through Pyo3","archived":false,"fork":false,"pushed_at":"2026-02-16T22:41:52.000Z","size":26985,"stargazers_count":1288,"open_issues_count":30,"forks_count":22,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-02-17T05:04:32.586Z","etag":null,"topics":["bindings","desktop-app","gui","python","tauri","webview"],"latest_commit_sha":null,"homepage":"https://pytauri.github.io/pytauri/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pytauri.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-16T15:19:48.000Z","updated_at":"2026-02-16T16:50:31.000Z","dependencies_parsed_at":"2025-03-17T09:19:54.139Z","dependency_job_id":"c8307d7d-a6ef-4121-9f70-b76f0796b553","html_url":"https://github.com/pytauri/pytauri","commit_stats":{"total_commits":16,"total_committers":1,"mean_commits":16.0,"dds":0.0,"last_synced_commit":"9fbd96923301322c135b3a7ee6cf2a423c575b04"},"previous_names":["wsh032/pytauri","pytauri/pytauri"],"tags_count":81,"template":false,"template_full_name":null,"purl":"pkg:github/pytauri/pytauri","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytauri%2Fpytauri","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytauri%2Fpytauri/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytauri%2Fpytauri/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytauri%2Fpytauri/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pytauri","download_url":"https://codeload.github.com/pytauri/pytauri/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytauri%2Fpytauri/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30288766,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bindings","desktop-app","gui","python","tauri","webview"],"created_at":"2025-03-27T02:10:58.246Z","updated_at":"2026-03-09T09:01:47.726Z","avatar_url":"https://github.com/pytauri.png","language":"Rust","readme":"\u003c!-- The content will be also use in `docs/index.md` by `pymdownx.snippets` --\u003e\n\u003c!-- Do not use any **relative link** and  **GitHub-specific syntax** ！--\u003e\n\u003c!-- Do not rename or move the file --\u003e\n\n# PyTauri\n\n![banner.png](https://raw.githubusercontent.com/pytauri/branding/6832e0defd4220b8a3f5c1f111bd164cee616bbe/assets/banner.png)\n\n[Tauri] bindings for Python through [Pyo3]\n\n[Tauri]: https://github.com/tauri-apps/tauri\n[Pyo3]: https://github.com/PyO3/pyo3\n\n---\n\n[![CI: docs]][CI: docs#link] [![msrv]][msrv#link] [![requires-python]][requires-python#link] [![Discord]][Discord#link]\n\nDocumentation: \u003chttps://pytauri.github.io/pytauri/\u003e\n\nSource Code: \u003chttps://github.com/pytauri/pytauri/\u003e\n\n[CI: docs]: https://github.com/pytauri/pytauri/actions/workflows/docs.yml/badge.svg\n[CI: docs#link]: https://github.com/pytauri/pytauri/actions/workflows/docs.yml\n[Discord]: https://img.shields.io/discord/1411349756202188942?logo=discord\u0026label=discord\n[Discord#link]: https://discord.gg/TaXhVp7Shw\n[msrv]: https://img.shields.io/crates/msrv/pytauri?logo=rust\n[msrv#link]: https://rust-lang.github.io/rfcs/2495-min-rust-version.html\n\u003c!--\nTODO: Switch to \u003chttps://shields.io/badges/py-pi-python-version\u003e,\nbut need to add python version classifiers in `pyproject.toml` first.\nSee also \u003chttps://github.com/badges/shields/issues/5551\u003e.\n--\u003e\n[requires-python]: https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fpytauri%2Fpytauri%2Frefs%2Fheads%2Fmain%2Fpython%2Fpytauri%2Fpyproject.toml\u0026logo=python\n[requires-python#link]: https://packaging.python.org/en/latest/specifications/core-metadata/#requires-python\n\n---\n\nThis is a completely free and open-source project, but it is difficult to maintain without incentives and contributions from the community.\n\nIf you think this project is helpful, consider giving it a star [![GitHub Repo stars]][Github Repo], it would be very helpful for my work and studies. 🥺👉👈\n\n[GitHub Repo stars]: https://img.shields.io/github/stars/pytauri/pytauri?style=social\n[Github Repo]: https://github.com/pytauri/pytauri\n\n---\n\n## Features\n\n\u003e **TL;DR**\n\u003e\n\u003e You are hurry and just wanna see/run the demo? See [examples/tauri-app](https://github.com/pytauri/pytauri/tree/main/examples/tauri-app).\n\n[notification]: https://docs.rs/tauri-plugin-notification/latest/tauri_plugin_notification/\n\n- Need Rust compiler, but **almost don't need to write Rust code**!\n- Or use `pytauri-wheel`, **you won't need the Rust compiler, everything can be done in Python**! Check out [examples/tauri-app-wheel](https://github.com/pytauri/pytauri/tree/main/examples/tauri-app-wheel).\n- Can be integrated with `tauri-cli` to build and package standalone executables!\n    - Use `Cython` to protect your source code!\n- No IPC (inter-process communication) overhead, secure and fast, thanks to [Pyo3]!\n- Support Tauri official plugins(e.g., [notification]), and you can write your own plugins!\n\n    ![demo](https://github.com/user-attachments/assets/14ad5b51-b333-4d80-b04b-af72c4179571)\n\n- Natively support async python (`asyncio`, `trio` or `anyio`)\n- **100%** [Type Completeness](https://microsoft.github.io/pyright/#/typed-libraries?id=type-completeness)\n- Ergonomic API (and as close as possible to the Tauri Rust API)\n    - [Automatically generated TypeScript types and client for IPC](https://github.com/pytauri/pytauri/tree/main/examples/tauri-app/src/client)\n    - Python\n\n        ```python\n        import sys\n\n        from pydantic import BaseModel\n        from pytauri import (\n            AppHandle,\n            Commands,\n        )\n        from pytauri_plugins.notification import NotificationExt\n\n        commands: Commands = Commands()\n\n\n        class Person(BaseModel):\n            name: str\n\n\n        class Greeting(BaseModel):\n            message: str\n\n\n        @commands.command()\n        async def greet(body: Person, app_handle: AppHandle) -\u003e Greeting:\n            notification_builder = NotificationExt.builder(app_handle)\n            notification_builder.show(title=\"Greeting\", body=f\"Hello, {body.name}!\")\n\n            return Greeting(\n                message=f\"Hello, {body.name}! You've been greeted from Python {sys.version}!\"\n            )\n        ```\n\n    - Frontend\n\n        ```ts\n        import { pyInvoke } from \"tauri-plugin-pytauri-api\";\n        // or: `const { pyInvoke } = window.__TAURI__.pytauri;`\n\n        export interface Person {\n            name: string;\n        }\n\n        export interface Greeting {\n            message: string;\n        }\n\n        export async function greet(body: Person): Promise\u003cGreeting\u003e {\n            return await pyInvoke(\"greet\", body);\n        }\n        ```\n\n- Can be integrated with [nicegui]/[gradio]/[FastAPI] to achieve a full-stack Python development experience (i.g., without `Node.js`). See [examples/nicegui-app](https://github.com/pytauri/pytauri/tree/main/examples/nicegui-app).\n\n## Release\n\nWe follow [Semantic Versioning 2.0.0](https://semver.org/).\n\nRust and its Python bindings, PyTauri core and its plugins will keep the same `MAJOR.MINOR` version number.\n\n| name | pypi | crates.io | npmjs |\n|:-------:|:----:|:---------:|:-----:|\n| 👉 **core** | - | - | - |\n| pytauri | [![pytauri-pypi-v]][pytauri-pypi] | [![pytauri-crates-v]][pytauri-crates] | |\n| pytauri-core | | [![pytauri-core-crates-v]][pytauri-core-crates] | |\n| tauri-plugin-pytauri | | [![tauri-plugin-pytauri-crates-v]][tauri-plugin-pytauri-crates] | [![tauri-plugin-pytauri-api-npm-v]][tauri-plugin-pytauri-api-npm] |\n| 👉 **wheel** | - | - | - |\n| pytauri-wheel | [![pytauri-wheel-pypi-v]][pytauri-wheel-pypi] | | |\n| 👉 **utils** | - | - | - |\n| pyo3-utils | [![pyo3-utils-pypi-v]][pyo3-utils-pypi] | [![pyo3-utils-crates-v]][pyo3-utils-crates] | |\n| codelldb | [![codelldb-pypi-v]][codelldb-pypi] | | |\n\n[pytauri-pypi-v]: https://img.shields.io/pypi/v/pytauri\n[pytauri-pypi]: https://pypi.org/project/pytauri\n[pytauri-crates-v]: https://img.shields.io/crates/v/pytauri\n[pytauri-crates]: https://crates.io/crates/pytauri\n[pytauri-core-crates-v]: https://img.shields.io/crates/v/pytauri-core\n[pytauri-core-crates]: https://crates.io/crates/pytauri-core\n[pytauri-wheel-pypi-v]: https://img.shields.io/pypi/v/pytauri-wheel\n[pytauri-wheel-pypi]: https://pypi.org/project/pytauri-wheel\n[tauri-plugin-pytauri-crates-v]: https://img.shields.io/crates/v/tauri-plugin-pytauri\n[tauri-plugin-pytauri-crates]: https://crates.io/crates/tauri-plugin-pytauri\n[tauri-plugin-pytauri-api-npm-v]:https://img.shields.io/npm/v/tauri-plugin-pytauri-api\n[tauri-plugin-pytauri-api-npm]: https://www.npmjs.com/package/tauri-plugin-pytauri-api\n[pyo3-utils-pypi-v]: https://img.shields.io/pypi/v/pyo3-utils\n[pyo3-utils-pypi]: https://pypi.org/project/pyo3-utils\n[pyo3-utils-crates-v]: https://img.shields.io/crates/v/pyo3-utils\n[pyo3-utils-crates]: https://crates.io/crates/pyo3-utils\n[codelldb-pypi-v]: https://img.shields.io/pypi/v/codelldb\n[codelldb-pypi]: https://pypi.org/project/codelldb\n\n## Philosophy\n\n### For Pythoneer\n\nI hope `PyTauri` can become an alternative to [pywebview] and [Pystray], leveraging Tauri's comprehensive features to offer Python developers a GUI framework and a batteries-included development experience similar to [electron] and [PySide].\n\n\u003e PyTauri is inspired by [FastAPI] and [Pydantic], aiming to offer a similar development experience.\n\n### For Rustacean\n\nThrough [Pyo3], I hope Rust developers can better utilize the Python ecosystem (e.g., building AI GUI applications with [PyTorch]).\n\nAlthough Rust's lifetime and ownership system makes Rust code safer, Python's garbage collection (GC) will make life easier. 😆\n\n[pywebview]: https://github.com/r0x0r/pywebview\n[Pystray]: https://github.com/moses-palmer/pystray\n[electron]: https://github.com/electron/electron\n[PySide]: https://wiki.qt.io/Qt_for_Python\n[FastAPI]: https://github.com/fastapi/fastapi\n[Pydantic]: https://github.com/pydantic/pydantic\n[PyTorch]: https://github.com/pytorch/pytorch\n[nicegui]: https://github.com/zauberzeug/nicegui\n[gradio]: https://github.com/gradio-app/gradio\n\n## Used By\n\nAlthough PyTauri is a fairly young project, a few people have used it to make cool projects:\n\n- [Digger Solo](https://solo.digger.lol/) - AI powered file manager\n\n## Credits\n\nPyTauri is a project that aims to provide Python bindings for [Tauri], a cross-platform webview GUI library. `Tauri` is a trademark of the Tauri Program within the Commons Conservancy and PyTauri is not officially endorsed or supported by them. PyTauri is an independent and community-driven effort that respects the original goals and values of Tauri. PyTauri does not claim any ownership or affiliation with the Tauri Program.\n\n## License\n\nThis project is licensed under the terms of the *Apache License 2.0*.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpytauri%2Fpytauri","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpytauri%2Fpytauri","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpytauri%2Fpytauri/lists"}