axint
La capa de compresión para agentes de IA en Apple
Los agentes de codificación de IA pagan por token. Las superficies de la API de Apple (App Intents, SwiftUI, WidgetKit) son verbosas. Un solo widget requiere un TimelineEntry, un TimelineProvider, una EntryView y una estructura Widget antes de haber escrito una sola línea de lógica de negocio.
Axint comprime todo eso. Una definición en TypeScript se compila en Swift idiomático y listo para producción sin código repetitivo (boilerplate). Un intent se comprime ~4 veces. Una vista se comprime ~4 veces. Un widget se comprime 13 veces.
┌───────────────────────────────────────────┐
│ defineIntent() defineView() │ TypeScript / Python / JSON
│ defineWidget() defineApp() │
└───────────────────┬───────────────────────┘
│ axint compile
┌─────────┼─────────┐─────────┐
▼ ▼ ▼ ▼
┌────────┐ ┌───────┐ ┌────────┐ ┌──────┐
│ .swift │ │ .swift│ │ .swift │ │.swift│
│ .plist │ │ │ │ │ │ │
│ .entl. │ │ │ │ │ │ │
└────────┘ └───────┘ └────────┘ └──────┘
App Intent SwiftUI WidgetKit App
for Siri View Widget ScaffoldRelated MCP server: xcode-mcp
Por qué Axint
Cuatro superficies de Apple, un solo compilador. App Intents, vistas de SwiftUI, widgets de WidgetKit y estructuras de aplicaciones completas se compilan desde la misma canalización.
Analizador AST de TypeScript real. Utiliza la API del compilador de TypeScript (igual que
tsc), no expresiones regulares. Fidelidad total de tipos y diagnósticos con rangos de línea/columna.Nativo de MCP con modo de esquema JSON. Seis herramientas expuestas a cualquier cliente MCP. La herramienta
axint_compile_from_schemaacepta JSON mínimo (~20 tokens) y devuelve Swift compilado; los agentes de IA omiten TypeScript por completo y ahorran aún más tokens.Fidelidad de tipos nativa.
int → Int,double → Double,date → Date,url → URL,duration → Measurement<UnitDuration>. Los valores predeterminados y la opcionalidad se conservan de principio a fin.91 códigos de diagnóstico (
AX000–AX522) con sugerencias de corrección y salida codificada por colores. Los validadores de intent, entidad, vista, widget y aplicación tienen rangos de error dedicados.Compilación en sub-milisegundos. El playground de axint.ai ejecuta el compilador completo en el navegador sin viajes de ida y vuelta al servidor.
402 pruebas. Analizador, validador, generador, rutas de emisión, vistas, widgets, aplicaciones, modo de vigilancia, sandbox y MCP: todo cubierto.
IR entre lenguajes. La representación intermedia es JSON agnóstico al lenguaje. TypeScript, Python y JSON sin procesar se alimentan del mismo generador. Los nuevos frontends de lenguaje se conectan sin tocar el emisor de Swift.
Apache 2.0, sin CLA. Haz un fork, amplíalo, publícalo.
Inicio rápido
npm install -g @axintai/compiler
# Or run without installing
npx @axintai/compiler compile my-intent.ts --stdoutIntent
import { defineIntent, param } from "@axintai/compiler";
export default defineIntent({
name: "CreateEvent",
title: "Create Calendar Event",
description: "Creates a new event in the user's calendar.",
domain: "productivity",
params: {
title: param.string("Event title"),
date: param.date("Event date"),
duration: param.duration("Event duration", { default: "1h" }),
location: param.string("Location", { required: false }),
},
});Vista
import { defineView, prop, state, view } from "@axintai/compiler";
export default defineView({
name: "EventCard",
props: {
title: prop.string(),
date: prop.date(),
},
state: {
isExpanded: state.boolean(false),
},
body: [
view.vstack({ alignment: "leading", spacing: 8 }, [
view.text("entry.title"),
view.conditional("isExpanded", [view.text("entry.date")]),
]),
],
});Widget
import { defineWidget, entry, view } from "@axintai/compiler";
export default defineWidget({
name: "EventCountdown",
displayName: "Event Countdown",
description: "Shows time until the next event.",
families: ["systemSmall", "systemMedium"],
entry: {
eventName: entry.string("Untitled"),
minutesUntil: entry.int(0),
},
body: [
view.vstack({ alignment: "center", spacing: 4 }, [
view.text("entry.eventName"),
view.text("entry.minutesUntil"),
]),
],
});Aplicación
import { defineApp, scene, storage } from "@axintai/compiler";
export default defineApp({
name: "WeatherApp",
scenes: [
scene.windowGroup("WeatherDashboard"),
scene.settings("SettingsView", { platform: "macOS" }),
],
appStorage: {
useCelsius: storage.boolean("use_celsius", true),
lastCity: storage.string("last_city", "Cupertino"),
},
});Compila cualquiera de ellos:
axint compile my-intent.ts --out ios/Intents/
axint compile my-view.ts --out ios/Views/
axint compile my-widget.ts --out ios/Widgets/
axint compile my-app.ts --out ios/App/Modo de vigilancia (Watch mode)
Para un desarrollo iterativo, axint watch recompila en cada guardado:
axint watch ./intents/ --out ios/Intents/ --emit-info-plist --emit-entitlements
axint watch my-intent.ts --out ios/Intents/ --format --swift-buildDebounce de 150ms, errores en línea y swift build opcional después de cada compilación exitosa.
Servidor MCP
Axint se distribuye con axint-mcp, un servidor del Protocolo de Contexto de Modelo (MCP) para Claude Desktop, Claude Code, Cursor, Windsurf y cualquier cliente MCP.
{
"mcpServers": {
"axint": {
"command": "axint-mcp",
"args": []
}
}
}Seis herramientas:
Herramienta | Qué hace |
| Genera un intent de TypeScript inicial a partir de una descripción |
| Canalización completa: TypeScript → Swift + plist + entitlements |
| Validación de prueba con diagnósticos |
| JSON mínimo → Swift (modo de ahorro de tokens para agentes de IA) |
| Lista las plantillas de referencia incluidas |
| Devuelve el código fuente de una plantilla específica |
El modo de esquema es la optimización clave para los agentes: en lugar de generar TypeScript y luego compilar, los agentes envían ~20 tokens de JSON y obtienen Swift compilado directamente.
Diagnósticos
91 códigos de diagnóstico en cinco validadores:
Rango | Dominio |
| Compilador / Analizador |
| Intent |
| Salida Swift |
| Vista |
| Widget |
| Aplicación |
error[AX100]: Intent name "sendMessage" must be PascalCase
--> src/intents/messaging.ts:5:9
= help: rename to "SendMessage"Consulta docs/ERRORS.md para obtener la referencia completa.
Mapeos de tipos admitidos
TypeScript | Swift | Soporte de valor predeterminado |
|
| ✓ |
|
| ✓ |
|
| ✓ |
|
| ✓ |
|
| ✓ |
|
| — |
|
| ✓ (ej. |
|
| — |
|
| ✓ |
Pruébalo en tu navegador
No requiere instalación: axint.ai/#playground ejecuta el compilador completo en el navegador sin viajes de ida y vuelta al servidor.
Requisitos
Node.js 22+
Cualquier SO: macOS, Linux, Windows
Xcode 15+ (solo para enviar el Swift generado a una plataforma Apple)
Estructura del proyecto
axint/
├── src/
│ ├── core/ # Parser, validator, generator, compiler, types, IR
│ ├── sdk/ # defineIntent(), defineView(), defineWidget(), param/prop/state/entry helpers
│ ├── mcp/ # MCP server (6 tools including JSON schema mode)
│ ├── cli/ # axint CLI (compile, watch, validate, eject, init)
│ └── templates/ # Intent template registry
├── python/ # Python SDK with native Swift codegen
├── extensions/
│ └── vscode/ # VS Code / Cursor extension (MCP-backed)
├── spm-plugin/ # Xcode SPM build plugin
├── tests/ # 402 vitest tests
├── examples/ # Example definitions
└── docs/ # Error reference, assetsContribución
Revisamos las PR en un plazo de 48 horas. Buenos lugares para empezar:
Explora los problemas marcados como
good first issueAñade una plantilla para un caso de uso común
Mejora los diagnósticos con mejores sugerencias de corrección
Consulta CONTRIBUTING.md. Apache 2.0, sin CLA.
Hoja de ruta
Consulta ROADMAP.md. Aspectos destacados:
[x] Cuatro objetivos de compilación: intents, vistas, widgets, aplicaciones
[x] Servidor MCP con modo de esquema JSON (6 herramientas)
[x] 91 códigos de diagnóstico con sugerencias de corrección
[x] Modo
--watchcon--swift-build[x] Extensión para VS Code / Cursor
[x] SDK de Python con generación de código Swift nativo
[x] Plugin de compilación SPM para Xcode + plugin de proyecto Xcode
[x]
axint ejectpara salida Swift sin dependencias[x] Puente IR entre lenguajes (TS, Python, JSON)
[x]
defineApp(): compilación de estructura de aplicación completa[ ]
defineExtension(): compilación de extensión de aplicación[ ] Axint Cloud (compilación alojada)
Licencia
Apache 2.0: haz un fork, amplíalo, publícalo. Sin CLA.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/agenticempire/axint'
If you have feedback or need assistance with the MCP directory API, please join our Discord server