Axint Python SDK
Axint is the proof and repair layer for Apple coding agents. The Python SDK is its native authoring surface for App Intents, entities, SwiftUI views, WidgetKit widgets, and app scaffolds. It parses Python without executing it, validates the resulting IR, and generates inspectable Swift directly in Python.
The normal Python parse, validate, and compile paths do not require Node.js.
Full existing-project Xcode proof is provided by the main @axint/compiler CLI
on macOS.
Install
pip install axint
For development:
git clone https://github.com/agenticempire/axint.git
cd axint/python
pip install -e '.[dev]'
Define an intent
from axint import define_intent, param
create_event = define_intent(
name="CreateCalendarEventIntent",
title="Create Calendar Event",
description="Creates a new event on the user's calendar",
domain="productivity",
params={
"event_title": param.string("Title of the event"),
"start_date": param.date("When the event starts"),
"duration_minutes": param.int("Length of the event in minutes"),
"is_all_day": param.boolean(
"Whether the event is all-day", optional=True, default=False
),
},
entitlements=["com.apple.developer.calendars"],
info_plist_keys={
"NSCalendarsUsageDescription": "Create and edit calendar events you request.",
},
)
Parse, validate, and compile
The package installs axint-py; the JavaScript package owns the axint command.
# Inspect compatible IR without executing the Python file
axint-py parse intents/create_event.py
axint-py parse intents/create_event.py --json
# Generate Swift natively in Python
axint-py compile intents/create_event.py --stdout
axint-py compile intents/create_event.py --out ios/Intents/
# Emit companion metadata
axint-py compile intents/create_event.py --out ios/Intents/ \
--emit-info-plist --emit-entitlements
# Validate without generating Swift
axint-py validate intents/create_event.py
# Return machine-readable output
axint-py compile intents/create_event.py --json
Use it as a library
from axint import define_intent, generate_swift, param, validate_intent
intent = define_intent(
name="SendMessage",
title="Send Message",
description="Sends a message",
domain="messaging",
params={"body": param.string("Message text")},
)
ir = intent.to_ir()
diagnostics = validate_intent(ir)
swift_code = generate_swift(ir)
Cross-language verification
Python produces IR compatible with the TypeScript compiler. Pipe an intent into the main CLI when you want an additional cross-surface compiler pass:
axint-py parse intent.py --json | axint compile - --from-ir --stdout
This bridge is optional. Native Python generation does not invoke it.
Coverage boundary
| Capability | Python SDK |
|---|---|
| Intent, entity, view, widget, and app definitions | Implemented |
| Primitive parameters, entitlements, and plist fragments | Implemented |
| Native Swift generation and IR validation | Implemented |
| Parse, compile, and validate CLI | Implemented |
| Focused Python MCP authoring server | Implemented with the mcp extra |
| Optional Node-backed Swift validator helper in Python MCP | Available when the JavaScript package is installed |
| Resumable Xcode build, test, repair, and signed proof | Use the main @axint/compiler CLI on macOS |
The Python and TypeScript generators are separate implementations over compatible contracts. Parity tests cover their shared output; a claim about one surface should not be assumed to apply to the other without a corresponding test.
MCP extra
pip install 'axint[mcp]'
axint-mcp-py
The Python MCP package focuses on Python authoring, generation, validation, and discovery. It is not a substitute for the main MCP server's complete project proof and coordination surface.
Prove the resulting Apple project
After adding generated Swift to an Xcode project, run the full local proof loop:
npx -y -p @axint/compiler axint prove --dir /path/to/MyApp
The command checks Swift, runs the available Xcode build and tests, reconciles findings, and writes a signed source-free receipt. It does not upload project source by default.
Development
pip install -e '.[dev]'
pytest
ruff check .
mypy axint
pyright
Apache-2.0 licensed. See LICENSE.
Metadata
Release files for axint 0.6.0
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 | |
|---|---|---|---|---|
| axint-0.6.0.tar.gz | 66.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| axint-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 121.7 kB
Release files / axint-0.6.0.tar.gz
| Download URL | axint-0.6.0.tar.gz |
|---|---|
| Size | 66.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
34b419ad195f517f5c730a163d78672069805e1b47f5cc9f97436fc4a949f063
|
|
BLAKE2b-256 checksum How to use checksums |
e404f0cf327ee82fa0ba0fdb57a16e17f1c6e1422f0b520443d1f12f0426abe7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Release files / axint-0.6.0-py3-none-any.whl
| Download URL | axint-0.6.0-py3-none-any.whl |
|---|---|
| Size | 55.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f128d733b4e0180c55842b5299c49872ce58dea8f7f9b9c24c6f43102a59f603
|
|
BLAKE2b-256 checksum How to use checksums |
3e42d3fae4e53086e3c83b4e0acee3d052e9184c9f194b10e9d2c588a41e0e95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Security for axint 0.6.0
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.