Skip to main content
Glama

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      Scaffold

Related 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_schema acepta 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 (AX000AX522) 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 --stdout

Intent

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-build

Debounce 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

axint_scaffold

Genera un intent de TypeScript inicial a partir de una descripción

axint_compile

Canalización completa: TypeScript → Swift + plist + entitlements

axint_validate

Validación de prueba con diagnósticos

axint_compile_from_schema

JSON mínimo → Swift (modo de ahorro de tokens para agentes de IA)

axint_list_templates

Lista las plantillas de referencia incluidas

axint_template

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

AX000AX023

Compilador / Analizador

AX100AX113

Intent

AX200AX202

Salida Swift

AX300AX322

Vista

AX400AX422

Widget

AX500AX522

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

string

String

int

Int

double

Double

float

Float

boolean

Bool

date

Date

duration

Measurement<UnitDuration>

✓ (ej. "1h")

url

URL

optional<T>

T?


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, assets

Contribución

Revisamos las PR en un plazo de 48 horas. Buenos lugares para empezar:

  • Explora los problemas marcados como good first issue

  • Añ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 --watch con --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 eject para 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