Skip to content
Proyectos

AgentiLoop/Agent has 651 GitHub stars and 71 forks. GitHot measured 0 stars in 24 hours and -1 in 7 days. Last checked 2026-11-08 22:22 UTC. Last push 2026-11-03.

Cómo se miden estas cifras

Agent! now supports macOS 14.6 or later, Apple Silicon and Intel, latest release. The Best AI agent for Mac: drives any app via Accessibility, codes/builds in Xcode, automates AppleScript, JXA, Swift and SMAppService shell (user/root). 23 LLM providers, local/cloud, plus on-device Apple Intelligence and Jev guard. Auto-Pilot, MCP, Avatar.

What you can do

  • 🧠 Self-verifying task loop — reasons, executes, observes results, self-corrects. A task can't declare itself done until goal_state criteria are marked with evidence; an opt-in critic reviews the diff first.
  • 🛠 Agentic coding — reads codebases, edits with string-replace diffs, builds Xcode projects natively (clickable errors), manages git, indexes repos into a portable JSONL repo-map. Every edit is snapshotted — one-click rollback or whole-task rewind_task.
  • 🖥 Desktop automation — drives any Mac app through the Accessibility API (AXorcist), element-based with fuzzy auto-retry. Plus NSAppleScript, JXA and 51 ScriptingBridge app bridges, all in-process with TCC.
  • 📜 AgentScript — Swift dylibs compiled at runtime and dlopen'd in-process with full TCC. Deleted scripts go to .Trash and are restorable.

Crecimiento de estrellas medido

in 24h
0
in 7 days
-1
in 15 days
Actualización retrasada
in 1 month
Actualización retrasada

Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.

readme/README_es.md

Original
image

🦾 AgentiLoop Agent!

🌐 Sitio web oficial: agentiloop.ai — descargas, documentación, reseñas y noticias.

Latest Release GitHub Stars GitHub Forks macOS 14.6+ Swift 6.4 Sponsor AgentiLoop

AgentiLoop Agent! on LaunchNest

⭐ Si Agent! te ahorra tiempo, dale una estrella al repo. Las estrellas ayudan a otros usuarios de Mac a encontrar un agente de IA gratuito, nativo y de código abierto, y mantienen vivo el proyecto.

🆕 El nuevo del barrio: AgentiLoop CLI ⚡️

El bucle agéntico, desatado en tu terminal. Mac. Windows. Linux. Tú eliges.

Conoce a los nuevos miembros de la familia Agent!: dos CLI multiplataforma con exactamente las mismas capacidades. Elige tu sabor:

AgentiLoop CLI: dos versiones, Rust y Go, con exactamente las mismas capacidades. macOS, Windows, Linux.

Creado con AgentiLoop Agent! para Mac. Sí, el agente escribió a sus propios hermanitos. 🤖✨ ¡Ya está aquí la v0.0.5! Más herramientas: búsqueda glob/grep, web_fetch, todos, AGENTS.md, /undo, comandos slash personalizados y --json. ¡Descárgala hoy!

Rust CLI en GitHub Go CLI en GitHub

Traducciones del README

English · Español · Français · Deutsch · 中文 (简体) · Русский · 한국어 · 日本語

Ajedrez dentro de Agent

Screenshot 2026-08-23 at 7 34 10 PM

¿Qué es Agent!?

Una app. Cualquier IA. Control total de tu Mac.

Agent! es una app 100 % nativa en Swift 6.2 / SwiftUI que conecta 23 proveedores de LLM — Claude, Codex, OpenAI, Gemini, Grok, Mistral, Mistral Vibe, DeepSeek, Hugging Face, Z.ai, BigModel, Alibaba DashScope, Qwen, Qwen Code, Meta Muse, MiniMax, OpenRouter, Requesty, A2Agent, OrcaRouter, Ollama (nube y local), vLLM y LM Studio — más Apple Intelligence en el dispositivo — a un bucle de tareas autónomo que realmente hace cosas: lee tu código, corrige el bug, compila el proyecto de Xcode, hace commit del diff, controla cualquier app de Mac mediante la API de Accesibilidad, ejecuta comandos de shell como tú o como root, te envía los resultados por iMessage y responde a un «Agent!» hablado.

Sin NPM, sin Electron, sin suscripción, sin telemetría. Trae tu propia clave de API, ejecútalo totalmente en local o gratis con Apple Intelligence. Cada paquete Swift del que depende fue escrito por el mismo autor. Consulta la Historia más abajo.

Inicio rápido (Descarga)

  1. Descarga Agent! y arrástralo a Aplicaciones — o con Homebrew:
    brew update && brew install --cask agentiloop-agent
    
  2. Abre Agent! — lo configura todo automáticamente
  3. Elige tu IA — Ajustes → elige un proveedor → introduce la clave de API

✅ Nunca necesitas compilar desde el código fuente. Cada release y cada pre-release incluye un binario de Mac precompilado (.dmg + .zip), construido por CI y firmado, notarizado y grapado (stapled) por Apple con el Team ID de AgentiLoop. Como los binarios oficiales llevan un Developer ID real, el Launch Agent y el Launch Daemon siempre se registran y nunca se «pierden» — eso solo ocurre con builds desde el código fuente firmados ad-hoc (ver Opción B más abajo). Si tus helpers desaparecieron, instala el binario del último release.

Inicio rápido (Compilar desde el código fuente)

Solo necesario si quieres modificar Agent! en sí. Todos los demás: usad el binario firmado de arriba.

git clone https://github.com/AgentiLoop/agent.git
cd Agent

Opción A — Xcode (cuenta de Apple Developer): abre Agent.xcodeproj, configura tu Development Team, compila y ejecuta el target Agent, aprueba el helper cuando se te pida.

Opción B — sin cuenta de desarrollador (solo Xcode Command Line Tools):

./build.sh              # Debug
./build.sh Release      # Release
open "build/DerivedData/Build/Products/Debug/Agent!.app"

⚠️ Las builds de la Opción B están firmadas ad-hoc. Los helpers Launch Agent/Daemon no se registrarán (SMAppService necesita un Team ID), pero el bucle LLM, todas las herramientas, Accesibilidad, AppleScript, shell y MCP siguen funcionando.

💡 Configuración barata: GLM-5.3 vía Z.ai (registro más rápido, modelo por defecto) cuesta céntimos por millón de tokens. ¿En local? Solo GLM-4.7-Turbo (32B) cabe en hardware de consumo (Apple Silicon de 64–128 GB vía Ollama).

Solución de problemas (Compilar desde el código fuente)

  • xcode-select apunta a Command Line Tools → sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
  • BUILD FAILED extraño tras hacer pull → DerivedData obsoleto: ./build.sh clean && ./build.sh
  • Los helpers nunca se registran → esperado en la Opción B; usa la Opción A para los helpers
  • Errores de deployment target / SDK → Agent! apunta a macOS 14.6; actualiza macOS y Xcode
  • El argumento de configuración distingue mayúsculas → ./build.sh (Debug) o ./build.sh Release

¿Qué puede hacer?

«Compila el proyecto de Xcode y corrige los errores» · «Reproduce mi lista Workout en Música» · «Haz una foto con Photo Booth» · «Envía un iMessage a mamá diciendo que llego a las 6» · «Abre Safari y busca vuelos a Tokio» · «Refactoriza esta clase en archivos más pequeños» · «¿Qué eventos tengo hoy en el calendario?»

Solo escribe lo que quieres. Agent! averigua cómo y lo hace realidad.


Funciones principales

  • 🧠 Bucle de tareas autoverificado — razona, ejecuta, observa resultados, se corrige. Una tarea no puede declararse terminada hasta que los criterios de goal_state se marcan con evidencia; un crítico opcional revisa antes el diff.

  • 🛠 Programación agéntica — lee bases de código, edita con diffs de sustitución de cadenas, compila proyectos de Xcode de forma nativa (errores clicables), gestiona git, indexa repos en un mapa JSONL portable. Cada edición se guarda — rollback con un clic o rewind_task de toda la tarea.

  • 🖥 Automatización del escritorio — controla cualquier app de Mac mediante la API de Accesibilidad (AXorcist), basada en elementos con reintento difuso automático. Además NSAppleScript, JXA y 51 puentes ScriptingBridge, todo en proceso con TCC.

  • 📜 AgentScript — dylibs Swift compiladas en tiempo de ejecución y cargadas con dlopen en proceso con TCC completo. Los scripts borrados van a .Trash y son recuperables.

  • 🛡 Ejecución privilegiada — shell como tú mediante un Launch Agent, o como root mediante un Launch Daemon que apruebas exactamente una vez (SMAppService + XPC). Consulta docs/SECURITY.md para saber por qué SMAppService ya impone la identidad de firma.

  • 🎙 Voz — di «Agent!» seguido de tu tarea; SFSpeechRecognizer en el dispositivo, se ejecuta tras ~2,5 s de silencio, en bucle.

  • 📱 Control remoto por iMessage — escribe Agent! next song desde tu iPhone; solo remitentes aprobados. Necesita Acceso total al disco para chat.db.

  • 🌐 Web — automatización de Safari integrada (JavaScript + AppleScript); Selenium y Playwright MCP opcionales para varios navegadores.

  • 🤝 Subagentes — hasta 3 concurrentes (6 de solo lectura) agentes aislados con mensajería por buzón y modelo propio por agente.

  • 🧩 MCP — añade cualquier servidor MCP en Ajustes → Servidores MCP; las herramientas aparecen como mcp_<server>_<tool>. Ejemplos (stdio y HTTP):

    {
      "mcpServers": {
        "xcode": {
          "transport": "stdio",
          "command": "xcrun",
          "args": ["mcpbridge"],
          "env": {}
        },
        "HelloWorld": {
          "transport": "stdio",
          "command": "/Users/you/bin/mcp-server-hello",
          "args": [],
          "env": {}
        },
        "DemoHttp": {
          "transport": "http",
          "url": "http://localhost:8085/mcp",
          "headers": {}
        }
      }
    }
    

    HelloWorld y DemoHttp son los servidores de demostración de AgentMCP; inicia primero mcp-server-demo-http para que DemoHttp tenga algo escuchando en el puerto 8085.

  • 🗂 Pestañas, historial, memoria, planes, skills — cada pestaña tiene su propia carpeta de proyecto y registro; memoria de usuario persistente; listas multi-plan en cada prompt.

  • 🔄 Cadena de respaldo — cambio automático al siguiente proveedor configurado ante 429/timeout/fallo de red.

Patrocinadores

Patrocinio

Empresas y proveedores de LLM que quieran apoyar el proyecto: consulta docs/SPONSORSHIP.md (niveles, ubicaciones) y docs/PROVIDER_PROGRAM.md (integración de proveedores de LLM), o patrocina directamente a través de GitHub Sponsors. Toda la facturación se realiza a través de GitHub Sponsors.

🤖 23 proveedores de LLM

Proveedor    Patrocinador    Coste Ideal para
A2Agent Barato DeepSeek, GLM, Kimi, MiniMax y Qwen con una sola clave compatible con OpenAI a una fracción del precio oficial
Apple Intelligence Gratis, en el dispositivo Triaje, resúmenes, compresión de tokens (icono del cerebro, no disponible en el selector de proveedor)
Claude Por token (clave API) o suscripción (OAuth) Tareas autónomas largas, pensamiento extendido, caché de prompts
Codex Suscripción ChatGPT Modelos de OpenAI vía OAuth de ChatGPT — sin clave API, sin cobro por token
DeepSeek Barato Programación económica, informe de aciertos de caché
Google Gemini De pago (nivel gratuito) Contexto largo, visión
Grok (xAI) De pago Información en tiempo real
Hugging Face Varía Modelos abiertos, serverless o endpoints dedicados
Meta Muse De pago Muse Spark mediante la Meta Model API (api.meta.ai), clave LLM_… compatible con OpenAI
MiniMax Barato Contexto de 1M tokens
Mistral / Mistral Vibe De pago Nube de pesos abiertos, código, producto agente
Ollama (nube) Nivel gratuito Modelos abiertos alojados
Ollama local / vLLM / LM Studio Gratis + hardware Totalmente offline; ventana de contexto real por modelo detectada
OpenAI De pago Uso general, llamadas a herramientas, visión, reasoning_effort
OpenRouter De pago 200+ modelos, una clave; Claude enrutado por protocolo Anthropic
OrcaRouter De pago 190+ modelos con una sola clave compatible con OpenAI al precio del proveedor; enrutado auto/fusion/fallback
Alibaba DashScope Barato Qwen 3.8 vía DashScope
Qwen (qwen.ai Token Plan) Suscripción QwenCloud Token Plan (clave sk-sp-): qwen3.8-max, qwen3.7-plus, GLM-5.2, DeepSeek V4
Qwen Code Suscripción Alibaba Coding Plan (clave sk-sp-): qwen3-coder-plus, qwen3.7-plus, GLM-5, Kimi K2.5, MiniMax-M2.5
Requesty De pago 300+ modelos con una sola clave compatible con OpenAI; precios y capacidades por modelo
Z.ai / BigModel Barato GLM-5.3 — punto de partida recomendado

💡 Los proveedores autoalojados solo son gratis en cuanto a tarifas de API — un modelo de 30B+ usable necesita un Mac Studio M2/M3/M4 Ultra (64–128 GB). Sin ese hardware, las vías de nube baratas de arriba salen muchísimo más económicas.

Herramientas

Los nombres canónicos vienen de AgentTools.Name.* (fuente: el paquete AgentTools). Los interruptores por proveedor pueden ocultar herramientas individuales.

Grupo Herramientas
Core done · list_tools · search · web_search · fetch · chat · memory · plan · goal_state · restore_tool_result · directory · skill · ask_user · index
Código / build file (read/write/edit/diff_apply/undo/list/search/mkdir/…) · git · xcode (build/run/analyze/snippet/code_review/add_file/bump_version/…) · agent_script
Shell user_shell (Launch Agent) · root_shell (Launch Daemon) · shell (respaldo en proceso) · batch · multi
Automatización macOS accessibility (25 acciones basadas en elementos) · applescript (con lookup_sdef) · javascript (JXA)
Web safari · selenium · mcp_playwright_browser_* (opcional)
Subagentes spawn_agent · tell_agent

Referencia completa por acción: docs/TECHNICAL.md.

AgentScript — Scripts Swift con TCC completo

Los AgentScripts son archivos Swift normales en ~/Documents/AgentScript/agents/Sources/Scripts/. Agent! compila cada uno a una .dylib con SwiftPM (Package.swift lista todos los scripts más los 51 puentes ScriptingBridge) y luego lo carga con dlopen con los permisos TCC propios de Agent! — Accesibilidad, Automatización, Calendario, Contactos, Mail, Fotos, etc. El LLM los gestiona con agent_script (create / edit / run / delete / restore / pull); la carpeta incluye ~35 ejemplos (Hello, TodayEvents, NowPlaying, CheckMail, CreateDmg, ArchiveXcode, …).

Punto de entrada — sin código de nivel superior, sin exit(); stdout se devuelve al LLM y el valor de retorno es el código de salida:

import Foundation
import CalendarBridge   // cualquier `import XBridge` se conecta solo — no hay que tocar Package.swift

@_cdecl("script_main")
public func scriptMain() -> Int32 {
    print("Hello from AgentScript! 👋")
    return 0
}

Variables de entorno — cómo se DEFINEN. El LLM nunca toca el entorno directamente. Llama a la herramienta y el ScriptService de Agent! exporta las variables al proceso del script (env["AGENT_PROJECT_FOLDER"] = cwd, env["AGENT_SCRIPT_ARGS"] = arguments en ScriptService+Execution.swift; setenv(...) en la variante en proceso). Las mismas dos variables se exportan a cada comando user_shell / root_shell / shell.

Llamada del LLM a la herramienta                       Lo que Agent! exporta al script
─────────────────────────────────────────────────────  ─────────────────────────────────────────────
agent_script(action:"run", name:"TodayEvents")         AGENT_PROJECT_FOLDER=/Users/tu/Documents/GitHub/Agent
                                                       (AGENT_SCRIPT_ARGS NO se define)

agent_script(action:"run", name:"TodayEvents",         AGENT_PROJECT_FOLDER=/Users/tu/Documents/GitHub/Agent
             arguments:"days=3,location=false,json=true")   AGENT_SCRIPT_ARGS="days=3,location=false,json=true"
Variable Cuándo se define Significado
AGENT_PROJECT_FOLDER Siempre La carpeta de proyecto de la pestaña activa (o $HOME si no hay). El cwd del runner también se fija ahí.
AGENT_SCRIPT_ARGS Solo cuando el LLM pasa arguments:"…" La cadena que pasó el LLM, tal cual. Los ejemplos usan la convención key=value,key=value.

Variables de entorno — cómo se LEEN. Dentro del script, ambas vienen de ProcessInfo.processInfo.environment. Este es exactamente el patrón de parseo de Hello.swift / TodayEvents.swift:

import Foundation

@_cdecl("script_main")
public func scriptMain() -> Int32 {
    let env = ProcessInfo.processInfo.environment

    // 1. Carpeta de proyecto — siempre presente; por si acaso, recurre al cwd
    let folder = env["AGENT_PROJECT_FOLDER"] ?? FileManager.default.currentDirectoryPath

    // 2. Argumentos — ausentes salvo que el LLM haya pasado `arguments:"…"`
    let argsString = env["AGENT_SCRIPT_ARGS"] ?? ""

    // 3. Valores por defecto y luego parseo de "key=value,key=value"
    var daysAhead    = 0
    var showLocation = true
    var outputJSON   = false

    for pair in argsString.split(separator: ",") {
        let parts = pair.split(separator: "=", maxSplits: 1).map { $0.trimmingCharacters(in: .whitespaces) }
        guard parts.count == 2 else { continue }
        switch parts[0] {
        case "days":     daysAhead    = Int(parts[1]) ?? 0
        case "location": showLocation = parts[1].lowercased() == "true"
        case "json":     outputJSON   = parts[1].lowercased() == "true"
        default: break
        }
    }

    print("Carpeta de proyecto: \(folder)")
    print("days=\(daysAhead) location=\(showLocation) json=\(outputJSON)")
    return 0
}

Las dos variables son independientes — nunca extraigas la carpeta de proyecto de AGENT_SCRIPT_ARGS. Equivalente en Bash dentro de user_shell: ls "$AGENT_PROJECT_FOLDER/Sources" (el cwd ya está ahí, no hace falta cd).

Convenciones reales de AGENT_SCRIPT_ARGS en los scripts incluidos (~/Documents/AgentScript/agents/Sources/Scripts/):

Script arguments: que pasa el LLM Estilo
TodayEvents days=3,location=false,json=true key=value,…
CheckMail unreadOnly=true,inboxCount=true,json=true key=value,…
ListReminders completed=false,limit=5 key=value,…
QuitApps excluded=Xcode,Agent,Terminal key=value con lista
NowPlaying json=true,artwork=true key=value,…
ArchiveXcode /path/to/Project.xcodeproj MyScheme 469UCUB275 posicional, separado por espacios (scheme/teamID se autodetectan si se omiten)
CreateDmg --app /path/to/App.app --output /path/out.dmg --name "My App" --compress estilo flags, separado por espacios, respeta comillas

Entrada / salida JSON — un mecanismo SEPARADO de las variables de entorno. Las variables de entorno las exporta Agent! al proceso; los archivos JSON son simples archivos en disco que el propio script lee y escribe con FileManager / JSONSerialization. Agent! no los crea, ni los pasa, ni los parsea. Dos patrones reales de los scripts incluidos:

1. Entrada solo por JSON (SendMessage) — sin argumentos de entorno; el script exige SendMessage_input.json y devuelve 1 si falta:

// ~/Documents/AgentScript/json/SendMessage_input.json   (escrito por el LLM con file(action:"write") antes de ejecutar)
{ "recipient": "Mamá", "message": "Llego a las 6", "imagePath": "~/Pictures/Photos Library.photoslibrary/originals/A/IMG_0001.jpeg" }

// ~/Documents/AgentScript/json/SendMessage_output.json  (escrito por el script)
{ "success": true, "timestamp": "2026-09-03T21:14:02Z", "recipient": "Mamá", "message": "Llego a las 6" }
// en caso de fallo: { "success": false, "timestamp": "…", "error": "Missing required field: recipient" }
// SendMessage.swift — así lo lee el script
let inputPath  = "\(NSHomeDirectory())/Documents/AgentScript/json/SendMessage_input.json"
guard let inputData = FileManager.default.contents(atPath: inputPath) else {
    writeOutput(outputPath, success: false, error: "Input file not found: \(inputPath)"); return 1
}
guard let json = try? JSONSerialization.jsonObject(with: inputData) as? [String: Any],
      let recipientHandle = json["recipient"] as? String else { /* … */ return 1 }
let message   = json["message"]   as? String
let imagePath = json["imagePath"] as? String

2. Argumentos de entorno para opciones, JSON para salida estructurada (TodayEvents, NowPlaying, CheckMail, ListReminders) — las opciones vienen de AGENT_SCRIPT_ARGS (o del opcional <Name>_input.json); con json=true el script escribe <Name>_output.json además de la salida legible por stdout que vuelve al LLM:

// agent_script(action:"run", name:"TodayEvents", arguments:"days=3,json=true")
// → ~/Documents/AgentScript/json/TodayEvents_output.json
{ "success": true, "timestamp": "…", "count": 2,
  "events": [ { "summary": "Standup", "calendar": "Work", "startTime": "…", "endTime": "…", "allDay": false, "location": "…" }, … ] }

// agent_script(action:"run", name:"NowPlaying", arguments:"json=true,artwork=true")
// → ~/Documents/AgentScript/json/NowPlaying_output.json
{ "success": true, "playerState": "playing",
  "track": { "name": "…", "artist": "…", "album": "…", "duration": 240 },
  "artwork": { "saved": true, "path": "~/Documents/AgentScript/images/….png", "width": 500, "height": 500 } }
// TodayEvents.swift — así lo escribe el script
func writeTodayEventsOutput(_ path: String, success: Bool, error: String? = nil,
                            events: [[String: Any]]? = nil, count: Int? = nil, outputJSON: Bool) {
    guard outputJSON else { return }
    var result: [String: Any] = ["success": success, "timestamp": ISO8601DateFormatter().string(from: Date())]
    if !success, let error { result["error"] = error }
    if success { if let events { result["events"] = events }; if let count { result["count"] = count } }
    try? FileManager.default.createDirectory(atPath: (path as NSString).deletingLastPathComponent, withIntermediateDirectories: true)
    if let out = try? JSONSerialization.data(withJSONObject: result, options: .prettyPrinted) {
        try? out.write(to: URL(fileURLWithPath: path))
    }
}

Los scripts borrados van a ~/Documents/AgentScript/agents/.Trash/ (agent_script(action:"restore")); action:"pull" descarga la versión upstream del repo AgentScripts.

🔒 Jev — una segunda opinión antes de los comandos de shell

Jev (TypeSafe System One) es una capa de decisión opcional que revisa los comandos de shell antes de que Agent! los ejecute. Complementa al proveedor de LLM que hayas elegido — nunca lo sustituye.

  • Qué hace. Cada comando que ya pasó las reglas fijas de ShellSafetyService se envía a Jev, que califica qué probabilidad tiene de destruir datos de forma irreversible. Por encima de tu umbral el comando se rechaza indicando el porcentaje y el propio comando; por debajo, se ejecuta.
  • Dónde se aplica. En todas las rutas de shell: el shell en proceso, el Launch Agent del usuario (user_shell) y el Launch Daemon privilegiado (root_shell).
  • Umbral ajustable. Ajustes → LLM Common Settings → Reject at … % destructive, de 0 a 100 % en pasos del 10 %. Valor por defecto: 70 %.
  • Diseñado para fallar abierto. Sin clave API, con el interruptor Consult Jev before tools desactivado o ante una caída de TypeSafe, el resultado es «sin opinión»: el comando continúa y el fallo se registra, nunca se hace pasar en silencio por un veredicto seguro. Cancelar una tarea durante una comprobación de Jev detiene el comando.
  • Visible. Cada comprobación registra el porcentaje de riesgo destructivo, el veredicto permitido/rechazado, el modelo que respondió y los tokens de entrada/salida.
  • Configuración. La clave API (guardada en el Llavero), el selector de modelo con actualización del catálogo y el interruptor de asesoramiento están en LLM Common Settings. El cliente vive en el paquete Swift incluido TypeSafeKit / TypeSafeMiddleware.

Privacidad y seguridad

Tus archivos, el contenido de la pantalla y los datos personales nunca salen de tu Mac — los proveedores en la nube solo ven el texto del prompt; los locales lo mantienen todo offline. Cada acción queda registrada.

Capa Qué hace
Shell Safety Service Bloquea de raíz rm -rf /, rm -rf ~, rm -rf con glob desnudo, --no-preserve-root — aplicado en el cliente y en el daemon. El LLM no puede saltárselo.
Confianza de clientes XPC Ambos listeners exigen firma de código del mismo equipo derivada de la propia firma de la app; las builds de release rechazan clientes sin equipo.
Puerta read-before-edit Se rechazan ediciones de archivos no leídos o modificados externamente (SHA-256), con lectura automática al rechazar.
Copias de seguridad + rewind Cada edición se guarda (TTL de 1 semana); UI de Rollback, file(action:"undo") o rewind_task por tarea.
Enrutado TCC en proceso Los comandos AppleScript/JXA/screencapture/accesibilidad se ejecutan en proceso, donde Agent! tiene los permisos TCC, nunca a través de los daemons.
Control de ejecución de herramientas El LLM no puede inventar resultados — cada llamada pasa por dispatchTool() y devuelve salida real. Las afirmaciones «hice clic/busqué…» sin herramienta reciben una corrección inyectada.
Errores tipados + guardias Cada resultado fallido lleva una pista de recuperación; los guardias de disco rayado y de bloqueo avisan y luego paran; las puertas de finalización limitan los rechazos a 3 por tarea.
Rastro de auditoría en consola Se registra cada llamada a herramienta y cada comando del helper.

Atajos de teclado y comandos slash

Atajo Acción
Return Ejecutar tarea · ⌘ . / Esc cancelar
⌘ T / ⌘ W / ⌘ 1–9 / ⌘ ⇧ ←→ Nueva / cerrar / cambiar / anterior-siguiente pestaña
⌘ B / ⌘ D Alternar superposición de salida LLM / chevrones
⌘ F / ⌘ L / ⌘ V Buscar en el registro / limpiar registro / pegar imagen
↑ / ↓ Historial de prompts
⌘ ⇧ M / ⌘ ⇧ P Monitor de Mensajes / Ajustes
⌘ ⇧ K L H J U Limpiar todo / panel LLM / historial de prompts / historial de tareas / contadores de tokens

Los comandos slash se ejecutan en local: /clear [log|all|llm|history|tasks|tokens], /memory [show|clear|edit|<texto>], /auto ….

Piloto automático (/auto)

Ejecuta el bucle de tareas en ciclos desatendidos (en la pestaña principal o en cualquier pestaña LLM) hasta alcanzar un objetivo, agotar un presupuesto de tiempo o pulsar Detener. No hay límite de ciclos ni de iteraciones por ciclo: cuando la tarea de un ciclo termina por completo y el objetivo no se ha alcanzado, el siguiente ciclo empieza automáticamente.

Comando Qué hace
/auto <goal> Trabaja hacia el objetivo hasta que el LLM informe que se alcanzó
/auto 4h <goal> Igual, pero se detiene tras 4 horas (30m y 1.5h también funcionan)
/auto Revisa primero el proyecto y luego te pide el objetivo con ask_user
/auto history Lista los objetivos anteriores del piloto automático
/auto last / /auto #N Reinicia el objetivo más reciente / el N-ésimo del historial
/auto add <folder> Añade una carpeta de paridad: cada cambio del proyecto se replica allí
/auto remove <folder> Quita una carpeta de paridad
/auto status / /auto stop Muestra la sesión / la termina tras el ciclo actual (de inmediato si está entre ciclos)

Cada ciclo es una tarea normal; su resumen se añade a .agent/autopilot/progress.md y se pasa al prompt del siguiente ciclo. El LLM termina la sesión empezando su resumen final con AUTOPILOT: GOAL REACHED. Los ciclos que terminan sin resumen (errores, cancelaciones) nunca terminan la sesión: el siguiente ciclo solo espera más (15 s, 30 s, 60 s… hasta 5 min). Los comandos /auto se guardan en el historial de prompts (flecha arriba) y los objetivos en la lista de /auto history. Las sesiones activas sobreviven a los reinicios de la app: al salir (o tras un fallo) se pausan, y en el siguiente arranque cada una se reanuda en su pestaña con el siguiente ciclo.

FAQ

¿Necesito saber programar? No — español llano (o tu idioma nativo). ¿Cuánto cuesta? La app es gratis para uso no comercial y personal (PolyForm Noncommercial 1.0.0). Pagas a tu proveedor; GLM-5.3 vía Z.ai/BigModel o DeepSeek son los más baratos para trabajo serio. Los modelos locales son gratis si tienes el hardware. ¿Qué Mac necesito? Apple Silicon o Intel, macOS 14.6+. Cualquier Mac moderno para proveedores en la nube; 64 GB+ para modelos locales de 30B. ¿En qué se diferencia de Siri? Siri responde. Agent! actúa — apps, archivos, código, sistema.

Más: docs/FAQ.md · Arquitectura técnica · Comparativas (vs Claude Code, Cursor, Cline, OpenClaw) · Modelo de seguridad

Historia

Agent! es el resultado de tres años construyendo apps de IA agéntica — ANIE, Game Changer, BattleScript, XCF MCP Server and Client, D1F y unos ocho paquetes Swift originales. La pieza que faltaba era un bucle autónomo inteligente; una vez conseguido, lo mejor de esos proyectos se unió en Agent!. Ha escrito videojuegos (Boss-Man), creado apps, escrito poesía en Pages mediante AppleScript, generado imágenes de disco y las ha adjuntado a releases de GitHub. Donde Claude Code depende de ~65 paquetes NPM de terceros, Agent! es 100 % nativo, usa muy poca RAM e incluye de serie automatización de Xcode, análisis con Swift Syntax 6.2, Accesibilidad, AppleScript, AgentScript/ScriptingBridge, automatización de Safari y soporte MCP.

Ingeniería inversa con Agent!

Agent! 1.1.95

Agent! también es un banco de trabajo de ingeniería inversa. Lee imágenes de disco y ROMs, escribe las herramientas de extracción, estudia el código descompilado y reconstruye el juego en el navegador, comprobando su trabajo contra los datos originales. Así se crearon cuatro juegos de carreras y uno de lucha:

Juego Qué hizo Agent! Jugar
🚕 CrazyTaxi Reconstrucción en Three.js de Crazy Taxi (USA) de Sega Dreamcast. Herramientas en Python extraen los circuitos, vehículos, personajes, animaciones y audio de tu propio disco. El código de colisiones está portado de la descompilación y verificado contra los datos extraídos Necesitas tu propio disco
🍄 MarioKart64JS Mario Kart 64 reconstruido en Three.js, no emulado. Circuitos, karts, música y voces salen de la ROM original de N64, con los 16 circuitos, arenas de batalla, 15 objetos, texturas HD y juego online mk64js.gokart.games
🏎️ F1 Carreras de monoplazas contra una parrilla de IA en 18 circuitos reales. Trazados, desnivel y peraltes reconstruidos a partir de posiciones reales de coches y telemetría de la API OpenF1 f1.gokart.games
🏁 GoKart Juego de karts original en Godot 4 que recrea las reglas de Mario Kart 64 (rebufo, cilindradas, puntuación del Grand Prix, menús, música) con todo generado por código, más multijugador online gokart.games
🦇 BvS Batman v Superman, un juego de lucha 3D en Three.js donde cada píxel se dibuja con código: sin archivos de modelos, texturas ni muestras de audio bvs.agentiloop.ai

Ninguno de estos repos incluye recursos de los juegos. CrazyTaxi y MarioKart64JS necesitan tu propia copia del juego. Todos son proyectos de fans para uso personal y educativo.

La familia Agent!

Agent! se construye a partir de varios repos complementarios en la organización AgentiLoop. Noticias, descargas y kit de prensa en 🌐 agentiloop.ai (código del sitio).

Repo Qué es
AgentiLoopCLI · AgentiLoopGo El bucle del agente como CLIs multiplataforma para macOS, Windows y Linux (Rust · Go)
AgentScripts Los scripts Swift que Agent! compila y ejecuta en proceso
AgentTools Esquemas de herramientas, prompts del sistema y gestión de proveedores
AgentLLM Protocolos, tipos y registro de proveedores LLM
AgentMCP Cliente MCP (stdio + HTTP)
AgentAccess Automatización de accesibilidad
AgentEventBridges Protocolos ScriptingBridge para más de 50 apps de Mac
AgentD1F Motor de diff multilínea
AgentSwift Análisis de código con SwiftSyntax
AgentColorSyntax · AgentTerminalNeo Resaltado de sintaxis · markdown de terminal retro
AgentAudit Registro de auditoría con os.log

Star History

Contribuir

Consulta CONTRIBUTING.md — compila desde el código fuente en ~5 minutos con ./build.sh, sin cuenta de desarrollador. Los pull requests ejecutan el flujo de CI Build & Test. Revisa los good first issues.

Licencia

PolyForm Noncommercial 1.0.0 — gratis para uso no comercial y personal. El uso comercial y las versiones comerciales del software están reservados exclusivamente a AgentiLoop.ai, una empresa de Logos InkPen LLC. Contacta a AgentiLoop para una licencia comercial.


⚠️ Aviso Legal y Atribución

Aviso de Marca Registrada

"AgentiLoop Agent! for Mac" es un proyecto de software independiente y no está afiliado con, respaldado por, patrocinado por, ni asociado de ninguna otra forma con Apple Inc. "Apple," "Mac," "Mac mini," "MacBook," "macOS," y las marcas relacionadas son marcas registradas de Apple Inc., registradas en EE. UU. y otros países. Todas las demás marcas registradas, marcas de servicio y nombres comerciales mencionados aquí son propiedad de sus respectivos dueños y se usan solo con fines de identificación.

"AgentiLoop Agent!" y el logo de AgentiLoop Agent! son marcas registradas de AgentiLoop.ai, una empresa de Logos InkPen LLC. El uso de estas marcas requiere permiso previo por escrito. La licencia PolyForm Noncommercial a continuación otorga derechos solo sobre el código fuente — no otorga ningún derecho de marca registrada.

Licencia del Código Fuente (PolyForm Noncommercial 1.0.0)

El código fuente de "AgentiLoop Agent! for Mac" es de código disponible y está licenciado bajo la PolyForm Noncommercial License 1.0.0. Eres libre de usar, copiar, modificar y distribuir el código fuente para cualquier fin no comercial, sujeto a las condiciones del archivo LICENSE (conservar el Required Notice y una copia de, o un enlace a, los términos de la licencia). El uso comercial y las versiones comerciales del software están reservados exclusivamente a AgentiLoop.ai, una empresa de Logos InkPen LLC.

Binarios Compilados y Releases

Los binarios compilados, instaladores, compilaciones firmadas y artefactos de release distribuidos a través de los GitHub Releases de este proyecto, AgentiLoop.ai, o cualquier otro canal oficial, son obra con derechos de autor de AgentiLoop.ai, una empresa de Logos InkPen LLC y no están cubiertos por la licencia PolyForm Noncommercial que rige el código fuente. Todos los derechos sobre los binarios oficiales — incluyendo el nombre "AgentiLoop Agent!", el logo, la identidad de firma de código, y el Developer ID — están reservados.

Copyright © 2026 AgentiLoop.ai, una empresa de Logos InkPen LLC. Todos los derechos reservados.

Eres bienvenido a compilar tus propios binarios desde el código fuente para uso no comercial bajo la licencia PolyForm Noncommercial, siempre que no uses el nombre "AgentiLoop Agent!", el logo, ni la marca para identificar tu producto.

Descargo de Garantía

Este software se proporciona "TAL CUAL," sin garantía de ningún tipo, expresa o implícita, incluyendo pero no limitado a las garantías de comerciabilidad, idoneidad para un propósito particular, y no infracción. En ningún caso el autor o el titular de los derechos de autor serán responsables de ningún reclamo, daño u otra responsabilidad, ya sea en una acción de contrato, agravio, o de otro tipo, que surja de, fuera de, o en conexión con el software o el uso u otros manejos del software.


Gracias por tu interés en AgentiLoop Agent! — una aplicación creada para computadoras Mac mini, MacBook y Mac Studio que ejecutan macOS 14.6 o posterior en hardware y software Mac genuino.


Explorar proyectos relacionados