Primeros pasos
Inicio rápido
Synsema es un lenguaje de programación diseñado para agentes de IA — el razonamiento LLM, la coordinación multi-agente, los gates de aprobación humana, un servidor HTTP y un modelo de seguridad deny-by-default están integrados en el lenguaje, no atornillados como frameworks. Viene como un único binario estático (escrito en Rust) — sin Python, sin Node, sin runtime que instalar.
Instalación§
macOS / Linux:
curl -fsSL https://synsema.com/install.sh | sh
Windows (PowerShell):
irm https://synsema.com/install.ps1 | iex
Verificá:
synsema version
Hola, mundo§
El arranque más rápido es el scaffold — genera un hello.syn comentado (un tour corto del lenguaje, con su test), un .env.example con cada knob explicado, y un .gitignore:
synsema init mi-proyecto
O escribilo vos — poné esto en hello.syn:
-- Doc example: your first Synsema program. Comments in English (universal code).
intent: "doc example: hello world + a tiny task"
task greet(name)
give "Hello, " + name + "!"
print(greet("World")) -- run shows: Hello, World!
test "greet builds a friendly message"
assert_eq(greet("World"), "Hello, World!")
assert_eq(greet("Synsema"), "Hello, Synsema!")Correlo:
synsema run hello.syn
synsema run ejecuta un archivo; synsema test corre sus bloques test; synsema check parsea sin ejecutar.
Tu primer servidor HTTP§
Synsema trae un servidor HTTP de producción integrado — sin framework que agregar. Todo es deny-by-default: declarás lo que el programa puede hacer con require.
require serve(8080)
serve on 8080
route "GET /hello"
give {"msg": "hi"}
synsema serve app.syn # → http://127.0.0.1:8080/hello
Tu primera página web§
El mismo servidor sirve HTML de verdad. Una página es un template con { huecos }; tu CSS/JS viven en static/ (se recargan en caliente por request — editás, refrescás, listo):
require serve(8080)
serve on 8080
static "/assets" from "./static" -- app.css, app.js
route "GET /"
give render("pages/home.html", {"title": "Mi sitio"})
<!-- pages/home.html -->
<!DOCTYPE html><html><head><title>{ title }</title>
<link rel="stylesheet" href="/assets/app.css"></head>
<body><h1>{ title }</h1></body></html>
Recorrido completo (layout, componentes, formularios, páginas de error): Construí un sitio web.
Tu primera llamada al LLM§
El LLM es una primitiva integrada. Poné la clave de tu proveedor en .env (nunca se expone al programa) y:
require llm
let summary be generate "un resumen de una línea" given report
let action be decide between ["aprobar", "rechazar"] given request
El resultado de un decide se valida para que sea una de las opciones — con reintentos automáticos. Mirá LLM en la barra lateral para las operaciones nativas y para llamar a la API HTTP del proveedor directamente.
Siguiente§
- Contra tus instintos — dónde Synsema difiere de lo que un LLM asume (leelo antes de escribir mucho).
- Capacidades e intent — el modelo de seguridad deny-by-default.
- Secretos — API keys y tokens sin exponerlos nunca.