synsema
IT Italiano

Linguaggio di programmazione · framework per agenti IA · sicuro di default

Le persone leggono la pagina.
Gli agenti leggono la sorgente.

Una URL, negoziata per contenuto. Synsema è un linguaggio di programmazione veloce e sicuro di default per agenti IA, con il framework per agenti integrato: la stessa route serve HTML alle persone e Markdown ai modelli. Cambia il pannello per vedere esattamente il Markdown che un LLM riceve da questa pagina.

Impara costruendo su try.synsema.com: corsi con una sandbox reale, niente da installare.

GET synsema.com/it
200 OK · Content-Type: text/markdown
# Synsema
> Un linguaggio di programmazione per agenti IA.

## Cos'è
- Veloce. 47.200 req/s, davanti a Go e Node.
- Sicuro di default. Senza `require`, nessun accesso.
- Nativo per gli agenti. Una route, HTML o Markdown.

## Installa
curl -fsSL synsema.com/install.sh | sh
Indice per agenti: /llms.txt

Synsema

Un linguaggio di programmazione per agenti IA.

Throughput
47.200req/s
vs Go (net/http)
+10%
Sicuro di default
Nativo per gli agenti

↑ la stessa risorsa, due rappresentazioni · curl -H "Accept: text/markdown" synsema.com/it

Veloce · req/s a c=50

47.200req/s

Davanti a Go (42.800) e Node (38.700)1. Asincrono nativo, vero multi-core, un binario statico, zero runtime.

Sicuro di default

-- senza require, nessun accesso
require net("api.shop.com")
fetch("api.shop.com")  ✓ consentito
fetch("evil.com")      ⊘ rifiutato

Senza require non c'è accesso: rifiuta l'interprete, non una code review. Autenticazione, validazione e intento sono dichiarativi.

Nativo per gli agenti

Questa pagina è la demo. Ogni route serve HTML alle persone e Markdown/JSON agli agenti, con /llms.txt, /sitemap.xml e /openapi.json derivati dalla tabella delle route.

La documentazione espone un server MCP: gli agenti cercano, leggono, eseguono e testano codice attraverso un unico endpoint.

1 · misurato su un VPS Linux, 6 carichi, c=50, mediana delle esecuzioni (la prima scartata). Harness riproducibile: synsema-arena.

Cosa ci costruisci

Un framework per agenti IA e un linguaggio di programmazione, in un unico binario.

Tutto ciò che serve a un'app agentica è nel linguaggio, non in un framework incollato sopra: chiamate all'LLM, uso di strumenti, memoria, approvazione umana, orchestrazione multi-agente, un server di produzione e il modello di sicurezza. Per questo lo stesso linguaggio costruisce anche l'API, il sito, il cron e la CLI intorno all'agente.

Agenti

Agenti IA e app LLM

reason, decide, analyze e generate sono primitive: risposte validate, nuovi tentativi, qualsiasi provider, la chiave sigillata come segreto.

docs ↗

Orchestrazione

Sistemi multi-agente

Agenti su thread reali, una lavagna condivisa, segnali, un bus di eventi e memoria durevole, senza message broker da gestire.

docs ↗

Umano nel ciclo

Approvazioni e gate

approve, confirm e ask aspettano una persona reale, nel terminale o in coda dietro link monouso; se non c'è nessuno, è negato.

docs ↗

Strumenti

Server MCP

Esponi ciò che un programma sa fare a Claude Code, Cursor o Lampson. Il server MCP della documentazione stessa è scritto così.

docs ↗

Backend

API REST e CRUD

Route, auth e validazione dichiarative, paginazione, SQLite, Postgres, MySQL, Mongo o Redis, in un solo file, con il server di produzione integrato.

docs ↗

Tempo reale

App agentiche

WebSocket in ingresso, processi figli osservati riga per riga, un select su tutto, cancellazione e spegnimento ordinato.

docs ↗

Web

Siti, SSR

Template, layout e componenti; ogni pagina negoziata per gli agenti; /llms.txt, sitemap e OpenAPI gratis. Questo sito è uno di questi.

docs ↗

Deploy

HTTPS automatico

--tls-auto tu@sito.com: certificati e rinnovi da Let's Encrypt, HTTP/2, www verso l'apex, un reverse proxy quando serve.

docs ↗

App

Un'app: web, telefono e desktop

synsema init --desktop: la stessa app renderizzata sul server si installa su Android e iOS come PWA con push nativo, e si distribuisce come app desktop — un binario, una finestra app del browser, la tua icona, senza console.

docs ↗

Automazione

Cron, webhook, job

Attività pianificate e feed in tempo reale via WebSocket; lavori di lunga durata su un vero event loop, con osservabilità inclusa.

docs ↗

Dati

Dati e grafici

CSV, SQL, statistica, array numerici e grafici SVG nativi che gli agenti leggono come dati e le persone come immagini; esportazione in PNG e PDF.

docs ↗

Distribuzione

Un binario, o WASM

synsema build sigilla programma e asset in un eseguibile; l'interprete gira anche nei browser, all'edge e nei TEE.

docs ↗

Un file

Tutto il backend, con i suoi permessi in cima.

Un programma Synsema inizia dichiarando cosa può toccare. Tutto ciò che sta sotto quella riga gira lì dentro: le route, il database, i segreti, il modello. I due file qui sotto si compilano e girano così come sono.

api.synCostruire un'API REST ↗
-- A bookshop API. The `require` lines are the whole permission
-- surface: a port, one database file, one secret. Nothing else.
intent: "public read API; writes need the staff token"

require serve(8080)
require db("./shop.db")
require secret("API_TOKEN")

task check_token(token)
    let want be hmac_sha256("staff", token)
    when verify_hmac("staff", want, secret("API_TOKEN"))
        give {"role": "staff"}
    give nothing

serve on 8080
    auth with check_token
    rate_limit 120 per minute

    route "GET /books"
        give paged("SELECT id, title, price FROM books")

    route "POST /books" requires auth
        expect body {title: text, price: number}
        let b be json of request
        sql_exec("INSERT INTO books (title, price) VALUES (?, ?)",
                 [b.title, b.price])
        give created(b)

    route "GET /about"
        let doc be page([heading(1, "Bookshop"),
                         prose("HTML or Markdown, one route.")],
                        {"title": "Bookshop"})
        give content(doc)
agent.synPrimitive LLM ↗
-- An agent that triages support tickets. The model decides;
-- a human approves refunds; the API key is a sealed secret.
intent: "triage open tickets; refunds wait for a human"

require llm
require net("api.example.com")
require secret("SUPPORT_TOKEN")

let api be "https://api.example.com"
let auth be {"Authorization": bearer(secret("SUPPORT_TOKEN"))}
let r be http_get(api + "/tickets?open=1", auth)
let tickets be json_decode(body of r)

each t in tickets
    let msg be t["text"]
    let kind be decide between ["bug", "billing", "other"] given msg
    when kind == "billing"
        let amount be analyze msg for "the amount to refund"
        let who be t["customer"]
        approve "Refund " + text(amount) + " to " + who + "?" within 1h
    otherwise
        let reply be generate "a short, kind answer" given msg
        let url be api + "/tickets/" + t["id"] + "/reply"
        http_post(url, {"text": reply}, auth)
  • require è la superficie dei permessi. Una porta, un file di database, un segreto. Un fetch verso qualsiasi altro host è rifiutato dall'interprete.
  • Auth e validazione sono dichiarazioni. auth with nomina la task che dice chi è un token; expect body rifiuta un payload errato con un 400 che nomina il campo.
  • Una route, ogni lettore. content() risponde HTML ai browser e Markdown o JSON agli agenti; paged() pagina i risultati grandi per te.
  • Il modello è una primitiva. decide restituisce una delle opzioni o riprova; analyze e generate sono tipizzati, non stringhe di prompt incollate a mano.
  • Anche una persona è una primitiva. approve … within 1h aspetta qualcuno di reale; se non c'è nessuno, nega.
  • I segreti non si materializzano mai. La chiave viaggia sigillata fino al socket; il modello vede un segnaposto.

Costruito con Synsema

Tre cose che puoi usare oggi.

Agente di programmazione

Lampson

Un agente di programmazione IA open source per il tuo terminale e il tuo browser, scritto interamente in Synsema: strumenti confinati al tuo progetto, permessi sotto il tuo controllo, sub-agenti, attività pianificate, plugin.

lampson.org ↗

Capacità per agenti

Lamps

Unità portabili di capacità: un manifesto dichiara cosa può toccare il codice, un runtime lo fa rispettare e verifica ogni chiamata. lamp add, poi lamp mcp per Claude Code, Cursor o qualsiasi agente MCP.

lamps.sh ↗

Imparare

Try Synsema

Impara costruendo software per aziende reali, nel browser: corsi, missioni verificate in una sandbox reale, XP e livelli. Niente da installare.

try.synsema.com ↗

Dal blog

Benchmark, decisioni di design, guide.

Tutti gli articoli → · RSS