app-model
Generic application schema implemented in python
What it is and what it does
app-model is a Python library that implements a generic application schema for declaratively organizing application metadata. It provides a structured way to define menus, keybindings, actions, and commands using a model inspired by VS Code's application architecture. The package relies on Pydantic for data validation, in-n-out for dependency injection, psygnal for event signaling, and typing-extensions for enhanced type hints.
The library is designed for developers building desktop or complex applications who need a consistent, schema-driven way to manage application structure and configuration. It is currently in Alpha status, meaning the API may change, but it is actively maintained and supports Python 3.9 through 3.13.
Use it for:
- Define and validate menu structures and command hierarchies for a desktop application without hardcoding UI logic.
- Centralize keybinding definitions and action registration in a single declarative schema.
- Build plugin systems where commands and menus are registered dynamically via the schema.
- Organize application metadata in a way that can be serialized, versioned, and shared across tools.
- Implement a command palette or action browser by querying the application schema.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides a declarative schema for organizing application metadata like menus, keybindings, and commands, inspired by the VS Code application model.
Yes, if you are building a desktop or complex application and want a structured, schema-driven way to organize menus, commands, and keybindings. The low install friction, active maintenance, permissive license, and lack of known vulnerabilities make it a safe choice. Be aware it is in Alpha, so expect potential API changes; start with it if you value declarative organization over a mature, battle-tested API.
Install
app-model on PyPI
pip
pip install app-modeluv
uv add app-modelpoetry
poetry add app-modelInstalling app-model
Before you install
Low install friction with a pure-Python wheel and four lightweight runtime dependencies. Active maintenance with a recent commit on 2026-08-03, though the project is in Alpha status and has a modest community footprint.
License in practice
BSD 3-Clause License is permissive and places no significant restrictions on use, modification, or redistribution in commercial or private projects.
Quickstart
pip install app-model
from app_model import Application
app = Application(name="my_app")
Requires Python 3.9 or later.
Verify before relying
- Whether the schema supports runtime validation of application structure beyond what Pydantic provides.
- How the package handles complex nested menu hierarchies or dynamic command registration.
- Whether there are built-in integrations with common UI frameworks or if it is schema-only.
Package facts
| License | BSD 3-Clause License (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — in-n-out, psygnal, pydantic, typing-extensions |
| Maintenance | actively maintained — 278 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 187,917/month — #9,956 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: app_model-0.5.1-py3-none-any.whl
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
pyshortcutsCreates desktop and Start Menu shortcuts for…
permissive · top 15,000 on PyPI
craft-partsCraft Parts provides a declarative framework…
unclear · top 15,000 on PyPI
zope.browsermenuProvides browser menu implementation and ZCML…
unclear · top 15,000 on PyPI
simple-term-menuCreates interactive command-line menus where…
permissive · top 5,000 on PyPI
sqlacodegenReads an existing database schema and generates…
permissive · top 5,000 on PyPI
chzchz is a configuration management library that…
permissive · top 5,000 on PyPI
mcp-server-appwriteExposes Appwrite's backend-as-a-service…
unclear · top 15,000 on PyPI
pystrayPystray creates a system tray icon with an…
copyleft · top 5,000 on PyPI
mcp-server-gitExposes Git repository operations as tools for…
permissive · top 15,000 on PyPI
paramParam provides declarative class attributes…
permissive · top 5,000 on PyPI