---
slug: 00-quickstart
title: Inicio rápido
description: Synsema es un lenguaje de programación diseñado para agentes de IA. Instalalo y corré tu primer programa, servidor HTTP y llamada al LLM en minutos — un único binario estático, sin runtime.
example_ids: [hello-world]
---

# 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:

```sh
curl -fsSL https://synsema.org/install.sh | sh
```

Windows (PowerShell):

```powershell
irm https://synsema.org/install.ps1 | iex
```

Desde npm (Linux, macOS, Windows — el mismo binario nativo, no corre nada más; v0.6.3+):

```sh
npm i -g synsema          # después: synsema run app.syn
npx synsema run app.syn   # por proyecto, sin instalación global
```

Actualizar: `synsema update` (o `npm i -g synsema@latest` cuando lo instaló npm — el
binario se da cuenta y lo dice).

Verificá:

```sh
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`:

```sh
synsema init mi-proyecto
```

O escribilo vos — poné esto en `hello.syn`:

```synsema
-- 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:

```sh
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`.

```synsema
require serve(8080)

serve on 8080
    route "GET /hello"
        give {"msg": "hi"}
```

```sh
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):

```synsema
require serve(8080)

serve on 8080
    static "/assets" from "./static"        -- app.css, app.js
    route "GET /"
        give render("pages/home.html", {"title": "Mi sitio"})
```

```html
<!-- 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](41a-build-a-website)**.

## 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:

```synsema
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

- **[Try Synsema](https://try.synsema.org)** — aprendé construyendo software para negocios reales, en el navegador y sin instalar nada: cursos, misiones validadas en un sandbox real, XP y niveles.
- **[Contra tus instintos](/es/0.6.x/01-counter-your-priors)** — dónde Synsema difiere de lo que un LLM asume (leelo antes de escribir mucho).
- **[Capacidades e intent](/es/0.6.x/20-capabilities)** — el modelo de seguridad deny-by-default.
- **[Secretos](/es/0.6.x/21-secrets)** — API keys y tokens sin exponerlos nunca.
- **[Tu app en el teléfono (PWA)](/es/0.6.x/41b-pwa)** — `synsema init --pwa`: el sitio se instala en Android, iOS y escritorio, con push nativo.
