Rapide · req/s à c=50
47 200req/s
Devant Go (42 800) et Node (38 700)1. Asynchrone nativement, vrai multicœur, un binaire statique, zéro runtime.
Langage de programmation · framework pour agents IA · sécurisé par défaut
Une URL, négociée par contenu. Synsema est un langage de programmation rapide et sécurisé par défaut pour les agents IA, avec le framework d'agents intégré : la même route sert du HTML aux personnes et du Markdown aux modèles. Basculez le panneau pour voir exactement le Markdown qu'un LLM reçoit de cette page.
Apprenez en construisant sur try.synsema.com : des cours avec un vrai bac à sable, rien à installer.
# Synsema > Un langage de programmation pour agents IA. ## Ce que c'est - Rapide. 47 200 req/s, devant Go et Node. - Sécurisé par défaut. Sans `require`, pas d'accès. - Natif pour les agents. Une route, HTML ou Markdown. ## Installer curl -fsSL synsema.com/install.sh | sh Index pour agents : /llms.txt
Un langage de programmation pour agents IA.
↑ la même ressource, deux représentations · curl -H "Accept: text/markdown" synsema.com/fr
Rapide · req/s à c=50
47 200req/s
Devant Go (42 800) et Node (38 700)1. Asynchrone nativement, vrai multicœur, un binaire statique, zéro runtime.
Sécurisé par défaut
-- sans require, pas d'accès require net("api.shop.com") fetch("api.shop.com") ✓ autorisé fetch("evil.com") ⊘ refusé
Sans require, pas d'accès : c'est l'interpréteur qui refuse, pas une revue de code. Authentification, validation et intention sont déclaratives.
Natif pour les agents
Cette page est la démo. Chaque route sert du HTML aux personnes et du Markdown/JSON aux agents, avec /llms.txt, /sitemap.xml et /openapi.json dérivés de la table des routes.
La documentation expose un serveur MCP : les agents cherchent, lisent, exécutent et testent du code via un seul endpoint.
1 · mesuré sur un VPS Linux, 6 charges, c=50, médiane des exécutions (la première écartée). Harnais reproductible : synsema-arena.
Ce que vous construisez avec
Tout ce dont une application agentique a besoin est dans le langage, pas dans un framework collé par-dessus : appels au LLM, outils, mémoire, validation humaine, orchestration multi-agents, un serveur de production et le modèle de sécurité. Le même langage construit donc aussi l'API, le site, le cron et la CLI autour de l'agent.
Agents
reason, decide, analyze et generate sont des primitives : réponses validées, nouvelles tentatives, n'importe quel fournisseur, la clé scellée comme secret.
Orchestration
Des agents sur de vrais threads, un tableau noir partagé, des signaux, un bus d'événements et une mémoire durable, sans broker de messages à faire tourner.
docs ↗Humain dans la boucle
approve, confirm et ask attendent une vraie personne, dans le terminal ou en file derrière des liens à usage unique ; sans personne, c'est refusé.
Outils
Exposez ce qu'un programme sait faire à Claude Code, Cursor ou Lampson. Le serveur MCP de la documentation elle-même est écrit ainsi.
docs ↗Backends
Routes, auth et validation déclaratives, pagination, SQLite, Postgres, MySQL, Mongo ou Redis, dans un seul fichier, avec le serveur de production intégré.
docs ↗Temps réel
WebSockets entrants, processus enfants suivis ligne par ligne, un select sur l'ensemble, annulation et arrêt ordonné.
Web
Templates, layouts et composants ; chaque page négociée pour les agents ; /llms.txt, sitemap et OpenAPI offerts. Ce site en est un.
Déploiement
--tls-auto vous@site.com : certificats et renouvellements Let's Encrypt, HTTP/2, www vers l'apex, un reverse proxy quand il le faut.
Apps
synsema init --desktop : la même app rendue côté serveur s'installe sur Android et iOS en PWA avec push natif, et se livre en app de bureau — un binaire, une fenêtre d'app du navigateur, votre icône, sans console.
Automatisation
Tâches planifiées et flux en direct par WebSocket ; travail de longue durée sur une vraie boucle d'événements, observabilité incluse.
docs ↗Données
CSV, SQL, statistiques, tableaux numériques et graphiques SVG natifs que les agents lisent comme des données et les humains comme des images ; export PNG et PDF.
docs ↗Livraison
synsema build scelle programme et ressources dans un exécutable ; l'interpréteur tourne aussi dans les navigateurs, en edge et dans les TEE.
Un fichier
Un programme Synsema commence par déclarer ce qu'il peut toucher. Tout ce qui suit s'exécute à l'intérieur : les routes, la base de données, les secrets, le modèle. Les deux fichiers ci-dessous se compilent et s'exécutent tels quels.
-- 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)-- 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 est la surface de permissions. Un port, un fichier de base de données, un secret. Un fetch vers tout autre hôte est refusé par l'interpréteur.auth with nomme la tâche qui dit qui est un jeton ; expect body rejette un payload invalide avec un 400 qui nomme le champ.content() répond en HTML aux navigateurs et en Markdown ou JSON aux agents ; paged() pagine les gros résultats pour vous.decide renvoie une des options ou réessaie ; analyze et generate sont typés, pas des chaînes de prompt collées à la main.approve … within 1h attend une vraie personne ; sans personne, il refuse.Construit avec Synsema
Agent de programmation
Un agent de programmation IA open source pour votre terminal et votre navigateur, écrit entièrement en Synsema : outils confinés à votre projet, permissions sous votre contrôle, sous-agents, tâches planifiées, plugins.
lampson.org ↗Capacités pour agents
Des unités portables de capacité : un manifeste déclare ce que le code peut toucher, un runtime l'applique et audite chaque appel. lamp add, puis lamp mcp pour Claude Code, Cursor ou tout agent MCP.
Apprendre
Apprenez en construisant des logiciels pour de vraies entreprises, dans le navigateur : des cours, des missions vérifiées dans un vrai bac à sable, de l'XP et des niveaux. Rien à installer.
try.synsema.com ↗Sur le blog
Engine, program, modules, templates and assets in a single sealed executable, with a capability ceiling baked in. Nothing to install on the target — deploy it FROM scratch, or hand it to someone as a file.
A Synsema app is a website with automatic HTTPS, an installable phone app with native push, and a desktop app in its own window with your icon — from one server-rendered program and one API module. No native toolkit, no second codebase, no store required.
MCP is JSON-RPC. In Synsema the whole server is a dispatcher task and one POST route. Tools are tasks with real bodies, secrets stay sealed, and untrusted input runs under a capability ceiling.