Distribuí un programa entero como un solo binario con synsema build
Motor, programa, módulos, plantillas y assets en un único ejecutable sellado, con un techo de capacidades horneado adentro. Nada que instalar en el destino — desplegalo desde FROM scratch, o pasáselo a alguien como un archivo.
Distribuir un script es distribuir un runtime: el Python correcto, el Node correcto, los paquetes, el entorno. synsema build saca el runtime de la ecuación. La salida es un archivo que contiene el intérprete y tu programa, sellado con un checksum.
Un comando§
synsema build agent.syn -o agent # this platform
synsema build agent.syn -o agent --include data/ # bundle assets (dirs, one-level globs)
synsema build agent.syn -o agent --cap-set "stdout,net=api.example.com" # bake a ceiling
synsema build agent.syn -o agent-linux --engine-binary ./synsema-linux-x86_64 # cross, with a donor engine
El binario ejecuta tu programa: su argv es args(), las plantillas que renderiza y los archivos que incluiste se leen del bundle sin ninguna capacidad file (son parte del programa), y escribir sobre una ruta del bundle se rechaza. Pesa 30–60 MB, como cualquier binario estático — a nadie le pesa el CLI de Docker.
El techo viaja con él§
--cap-set y --profile pure quedan horneados y no se pueden levantar desde adentro. Si le pasás a alguien un binario construido con --cap-set "stdout,net=api.example.com", eso es todo lo que va a poder tocar, diga lo que diga el código. --profile pure saca por completo el sistema de archivos, los procesos, las bases de datos y los sockets. Un bundle adulterado se niega a correr.
Desplegalo desde la nada§
FROM scratch
COPY agent /agent
ENTRYPOINT ["/agent"]
Sin imagen base, sin gestor de paquetes, sin shell en el contenedor. El motor sigue estando a mano cuando lo necesitás — agent --engine version, agent --engine run other.syn — pero --engine update se rechaza: un programa construido se reconstruye, no se parcha en el lugar.
Servidores y apps de escritorio también§
Agentes, jobs, CLIs, herramientas que le das a un equipo — y, desde 0.6.16, servidores: synsema build app.syn -o app --serve --bind 0.0.0.0 --port 8080 hornea el runtime del servidor y las banderas de despliegue, y los montajes estáticos del bloque serve viajan dentro del archivo, así que un sitio entero o una app instalable es un solo ejecutable. Desde 0.6.18 el mismo comando hace apps de escritorio: --no-console y --icon te dan un .exe con tu ícono que abre en una ventana de app del navegador, y --bundle un .app de macOS o una carpeta lanzadora de Linux — mirá Distribuí tu app web como app de escritorio.
Probalo: instalá Synsema y después synsema build hello.syn -o hello && ./hello. La referencia del CLI, incluidos los artefactos WebAssembly para navegadores y TEEs, está en la documentación.