El lenguaje para
automatizar tu PC

Controla ratón, teclado, ventanas y Chrome con una sintaxis que se lee sola. Escrito en Rust, con salida JSON para agentes de IA y modo simulación.

demo.acm
Salida
Ln 1, Col 1acm 0.1.0

El IDE de escritorio de acm, aquí en una versión interactiva: edita, ejecuta con F5 o simula con Ctrl F5. En tu PC, el IDE lanza el acm real.

Todo lo que necesitas
para automatizar tu PC

Se lee como
lo dirías

Sin clases, sin imports, sin async. Un script de acm es la lista de cosas que harías tú con el ratón y el teclado, con variables, funciones y bucles cuando los necesitas.

Una sentencia por línea
Varias en la misma línea separadas por ;. Comentarios con // o #.
Comandos en cualquier capitalización
click es CLICK. Las variables sí distinguen mayúsculas.
Textos que interpolan
"${i * 2}", "${upper(x)}" o "${ips[i]}". Las rutas C:\ no necesitan escapes.
Repite sin bucles
KEYPRESS TAB (3) o WRITE "=" (40) repiten un comando N veces.

examples/notepad.acm · Abre el Bloc de notas, escribe, copia y comprueba el texto.

// Abre el Bloc de notas, escribe, y comprueba lo escrito a través del portapapeles.
// Lleva el ratón a la esquina superior izquierda para abortar (FAILSAFE).
// Ejecutar:  acm examples/notepad.acm

OPEN "notepad.exe"
WAITWINDOW "Bloc de notas", 10000
FOCUS "Bloc de notas"
DELAY 500ms

WRITE "Escrito por acm el ${now()}"
KEYPRESS ENTER
PASTE "Esta línea se pegó desde el portapapeles."
KEYPRESS ENTER
FOR i = 1 TO 3
    WRITE "Línea ${i} de 3"
    KEYPRESS ENTER
NEXT

// Seleccionar todo y copiar para verificar
KEYPRESS CTRL + A
KEYPRESS CTRL + C
DELAY 200ms
VAR texto = clipboard()
ASSERT contains(texto, "Línea 3 de 3"), "el texto no llegó al Bloc de notas"
PRINT "OK: el Bloc de notas contiene", len(lines(texto)), "líneas"
SCREENSHOT "notepad.png"
NOTIFY "Prueba del Bloc de notas completada"

Chrome, Edge y Brave.
Sin WebDriver.

El navegador se abre con el primer comando web y se controla por el protocolo DevTools. Pruebas E2E en diez líneas, con o sin ventana.

login.acm
WEBBROWSER CHROME HEADLESS
WEBOPEN "https://example.com/login"

WEBINPUT "#user" "anthoni"
WEBINPUT "//input[@id='pass']" "secreto"
WEBCHECK "#rec" TRUE
WEBCLICK "#go"

WEBGET "#titulo" titulo
ASSERT titulo == "Bienvenido anthoni"
WEBSCREENSHOT "prueba_web.png"
Chrome · HEADLESS
Captura tomada por acm: la página dice Bienvenido anthoni con el formulario de login relleno
Captura real tomada por WEBSCREENSHOT al ejecutar examples/prueba_web.acm.

Hecho para que lo use
un agente de IA

Pídele a tu agente que escriba un .acm, lo compruebe, lo simule y lo ejecute.Salida estructurada, sin ventanas que bloqueen y códigos fiables: todo lo que necesita para saber qué pasó.

Terminal
$ acm --json -v --no-dialogs examples/prueba_web.acm
{"event":"start","script":"examples\\prueba_web.acm","statements":11}
{"event":"step","line":7,"code":"WEBINPUT \"#user\" \"anthoni\""}
{"event":"step","line":10,"code":"WEBCLICK \"#go\""}
{"event":"screenshot","path":"C:\\…\\prueba_web.png"}
{"event":"print","text":"PASS: Bienvenido anthoni"}
{"event":"done","ok":true,"code":0,"ms":2755}
  1. 1

    Instala acm

    En PowerShell. Deja acm.exe en %LOCALAPPDATA%\Programs\acm\bin y lo añade al PATH. No necesitas Rust.

    En la Terminal. Deja acm en ~/.local/bin. Después concede a la terminal Accesibilidad y Grabación de pantalla.

    En una sesión X11. Deja acm en ~/.local/bin; si esa carpeta no está en el PATH, el instalador te dice cómo añadirla.

  2. 2

    Comprueba la instalación

    Abre una terminal nueva para que se cargue el PATH actualizado.

  3. 3

    Ejecuta tu primer script

    Como python: un archivo, código suelto con -e o la consola interactiva.

Windows x64macOS Intel y Apple SiliconLinux x64 (X11)·Navegador: Chrome, Edge o Brave·¿Prefieres compilarlo? cargo install --path .