CSL-Core
CSL-Core
❤️ ¡Nuestros colaboradores!
CSL-Core (Chimera Specification Language) es una capa de seguridad determinista para agentes de IA. Escriba reglas en archivos .csl, verifíquelas matemáticamente con Z3 y aplíquelas en tiempo de ejecución, fuera del modelo. El LLM nunca ve las reglas. Simplemente no puede violarlas.
pip install csl-coreCreado originalmente para Project Chimera, ahora es de código abierto para cualquier sistema de IA.
¿Por qué?
prompt = """You are a helpful assistant. IMPORTANT RULES:
- Never transfer more than $1000 for junior users
- Never send PII to external emails
- Never query the secrets table"""Esto no funciona. Los LLM pueden ser objeto de inyección de prompts, las reglas son probabilísticas (99% ≠ 100%) y no hay un registro de auditoría cuando algo sale mal.
CSL-Core cambia esto: las reglas residen fuera del modelo en archivos de política compilados y verificados por Z3. La aplicación es determinista, no una sugerencia.
Inicio rápido (60 segundos)
1. Escriba una política
Cree my_policy.csl:
CONFIG {
ENFORCEMENT_MODE: BLOCK
CHECK_LOGICAL_CONSISTENCY: TRUE
}
DOMAIN MyGuard {
VARIABLES {
action: {"READ", "WRITE", "DELETE"}
user_level: 0..5
}
STATE_CONSTRAINT strict_delete {
WHEN action == "DELETE"
THEN user_level >= 4
}
}2. Verifique y pruebe (CLI)
# Compile + Z3 formal verification
cslcore verify my_policy.csl
# Test a scenario
cslcore simulate my_policy.csl --input '{"action": "DELETE", "user_level": 2}'
# → BLOCKED: Constraint 'strict_delete' violated.
# Interactive REPL
cslcore repl my_policy.csl3. Úselo en Python
from chimera_core import load_guard
guard = load_guard("my_policy.csl")
result = guard.verify({"action": "READ", "user_level": 1})
print(result.allowed) # True
result = guard.verify({"action": "DELETE", "user_level": 2})
print(result.allowed) # FalseBenchmark: Resistencia a ataques adversarios
Probamos reglas de seguridad basadas en prompts frente a la aplicación de CSL-Core en 4 LLM de frontera con 22 ataques adversarios y 15 operaciones legítimas:
Enfoque | Ataques bloqueados | Tasa de omisión | Ops legítimas pasadas | Latencia |
GPT-4.1 (reglas de prompt) | 10/22 (45%) | 55% | 15/15 (100%) | ~850ms |
GPT-4o (reglas de prompt) | 15/22 (68%) | 32% | 15/15 (100%) | ~620ms |
Claude Sonnet 4 (reglas de prompt) | 19/22 (86%) | 14% | 15/15 (100%) | ~480ms |
Gemini 2.0 Flash (reglas de prompt) | 11/22 (50%) | 50% | 15/15 (100%) | ~410ms |
CSL-Core (determinista) | 22/22 (100%) | 0% | 15/15 (100%) | ~0.84ms |
¿Por qué 100%? La aplicación ocurre fuera del modelo. La inyección de prompts es irrelevante porque no hay nada contra lo que inyectar. Categorías de ataque: anulación directa de instrucciones, jailbreaks de juego de roles, trucos de codificación, escalada de múltiples turnos, suplantación de nombres de herramientas y más.
Metodología completa:
benchmarks/
Integración con LangChain
Proteja cualquier agente de LangChain con 3 líneas: sin cambios en los prompts, sin ajuste fino:
from chimera_core import load_guard
from chimera_core.plugins.langchain import guard_tools
from langchain_classic.agents import AgentExecutor, create_tool_calling_agent
guard = load_guard("agent_policy.csl")
# Wrap tools — enforcement is automatic
safe_tools = guard_tools(
tools=[search_tool, transfer_tool, delete_tool],
guard=guard,
inject={"user_role": "JUNIOR", "environment": "prod"}, # LLM can't override these
tool_field="tool" # Auto-inject tool name
)
agent = create_tool_calling_agent(llm, safe_tools, prompt)
executor = AgentExecutor(agent=agent, tools=safe_tools)Cada llamada a herramienta es interceptada antes de la ejecución. Si la política dice que no, la herramienta no se ejecuta. Punto.
Inyección de contexto
Pase contexto de tiempo de ejecución que el LLM no puede anular: roles de usuario, entorno, límites de tasa:
safe_tools = guard_tools(
tools=tools,
guard=guard,
inject={
"user_role": current_user.role, # From your auth system
"environment": os.getenv("ENV"), # prod/dev/staging
"rate_limit_remaining": quota.remaining # Dynamic limits
}
)Protección de cadena LCEL
from chimera_core.plugins.langchain import gate
chain = (
{"query": RunnablePassthrough()}
| gate(guard, inject={"user_role": "USER"}) # Policy checkpoint
| prompt | llm | StrOutputParser()
)Herramientas CLI
La CLI es un entorno de desarrollo completo para políticas: pruebe, depure y despliegue sin escribir Python.
verify — Compilación + Prueba Z3
cslcore verify my_policy.csl
# ⚙️ Compiling Domain: MyGuard
# • Validating Syntax... ✅ OK
# ├── Verifying Logic Model (Z3 Engine)... ✅ Mathematically Consistent
# • Generating IR... ✅ OKsimulate — Escenarios de prueba
# Single input
cslcore simulate policy.csl --input '{"action": "DELETE", "user_level": 2}'
# Batch testing from file
cslcore simulate policy.csl --input-file test_cases.json --dashboard
# CI/CD: JSON output
cslcore simulate policy.csl --input-file tests.json --json --quietrepl — Desarrollo interactivo
cslcore repl my_policy.csl --dashboard
cslcore> {"action": "DELETE", "user_level": 2}
🛡️ BLOCKED: Constraint 'strict_delete' violated.
cslcore> {"action": "DELETE", "user_level": 5}
✅ ALLOWEDformal — Verificación de modelos TLA⁺
cslcore formal my_policy.cslEjecuta el verificador de modelos oficial TLC (java -jar tla2tools.jar) contra su política. TLC explora exhaustivamente cada estado alcanzable en el espacio de estados abstractos y demuestra que cada propiedad temporal se cumple, o devuelve un rastro de contraejemplo concreto con el estado exacto que rompe su invariante.
╔══════════════════════════════════════════════════════════════════════════════╗
║ TLA⁺ FORMAL VERIFICATION ENGINE ║
║ Chimera Specification Language · Temporal Logic of Actions ║
║ ║
║ ⚡ REAL TLC · java -jar tla2tools.jar · Exhaustive Model Checking ║
║ TLC2 Version 2026.03.31.154134 (rev: becec35) · pid 48146 · 1 ║
║ worker(s) ║
╚══════════════════════════════════════════════════════════════════════════════╝
Variable Domain Cardinality
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
agent_tier {"STANDARD", "PREMIUM"} |2|
task_type {"READ", "WRITE", "ANALYZE"} |3|
risk_score 0..5 |6|
├─ □(no_destructive_ops) ✅ HOLDS [288 states 349ms]
├─ □(no_production_access) ✅ HOLDS [288 states 349ms]
├─ □(bounded_risk) ✅ HOLDS [288 states 349ms]
└─ Proof hash: 17dd1564897d242fc045a3a884a52bbb… ✅
╔══════════════ TLA⁺ VERIFICATION COMPLETE — ALL PROPERTIES HOLD ══════════════╗
║ ✅ Domain: AIAgentSafetyDemo · ⬡ 144 states · ⏱ 1047ms ║
╚══════════════════════════════════════════════════════════════════════════════╝Habilítelo en cualquier política añadiendo una línea a CONFIG:
CONFIG {
ENFORCEMENT_MODE: BLOCK
ENABLE_FORMAL_VERIFICATION: TRUE // ← triggers cslcore formal automatically
}O ejecútelo de forma independiente:
cslcore formal policy.csl # real TLC (Java required, JAR auto-downloaded)
cslcore formal policy.csl --mock # Python BFS fallback (no Java needed)
cslcore formal policy.csl --timeout 120
cslcore formal policy.csl --export-tla ./specs/ # save .tla + .cfg for TLA+ Toolbox¿No tiene Java? CSL-Core recurre automáticamente a un verificador de modelos BFS de Python. El banner indica claramente qué motor se ejecutó. El JAR se descarga automáticamente en el primer uso (~4MB desde el lanzamiento oficial de TLA+ en GitHub).
Pipeline CI/CD
# GitHub Actions
- name: Verify policies
run: |
for policy in policies/*.csl; do
cslcore verify "$policy" || exit 1
doneServidor MCP (Claude Desktop / Cursor / VS Code)
Escriba, verifique y aplique políticas de seguridad directamente desde su asistente de IA, sin necesidad de código.
pip install "csl-core[mcp]"Añada a la configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"csl-core": {
"command": "uv",
"args": ["run", "--with", "csl-core[mcp]", "csl-core-mcp"]
}
}
}Herramienta | Qué hace |
| Verificación formal Z3: detecta contradicciones en tiempo de compilación |
| Prueba políticas contra entradas JSON: PERMITIDO/BLOQUEADO |
| Resumen legible por humanos de cualquier política CSL |
| Genera una plantilla CSL a partir de una descripción en lenguaje sencillo |
Usted: "Escríbeme una política de seguridad que impida transferencias superiores a $5000 sin aprobación del administrador"
Claude: scaffold_policy → usted edita → verify_policy detecta una contradicción → usted corrige → simulate_policy confirma que funciona
Arquitectura
┌──────────────────────────────────────────────────────────┐
│ 1. COMPILER .csl → AST → IR → Compiled Artifact │
│ Syntax validation, semantic checks, functor gen │
├──────────────────────────────────────────────────────────┤
│ 2. Z3 VERIFIER Theorem Prover — Static Analysis │
│ Contradiction detection, reachability, rule shadowing │
│ ⚠️ If verification fails → policy will NOT compile │
├──────────────────────────────────────────────────────────┤
│ 3. TLA⁺ VERIFIER Model Checker — Temporal Safety │
│ Exhaustive state-space exploration via TLC │
│ Predicate abstraction for large numeric domains │
│ Counterexample traces + automated fix suggestions │
│ (opt-in: ENABLE_FORMAL_VERIFICATION: TRUE) │
├──────────────────────────────────────────────────────────┤
│ 4. RUNTIME Deterministic Policy Enforcement │
│ Fail-closed, zero dependencies, <1ms latency │
└──────────────────────────────────────────────────────────┘El cálculo pesado ocurre una vez en tiempo de compilación. El tiempo de ejecución es pura evaluación.
Utilizado en producción
¿Utiliza CSL-Core? Avísenos y le añadiremos aquí.
Políticas de ejemplo
Ejemplo | Dominio | Características clave |
Seguridad de IA | RBAC, protección PII, permisos de herramientas | |
Finanzas | Puntuación de riesgo, niveles VIP, sanciones | |
Web3 | Multi-firma, bloqueos temporales, omisión de emergencia | |
Métodos formales | Verificación de modelos TLA⁺: todas las propiedades se cumplen | |
Métodos formales | Rastro de contraejemplo TLA⁺ + sugerencias de corrección |
python examples/run_examples.py # Run all with test suites
python examples/run_examples.py banking # Run specific exampleReferencia de API
from chimera_core import load_guard, RuntimeConfig
# Load + compile + verify
guard = load_guard("policy.csl")
# With custom config
guard = load_guard("policy.csl", config=RuntimeConfig(
raise_on_block=False, # Return result instead of raising
collect_all_violations=True, # Report all violations, not just first
missing_key_behavior="block" # "block", "warn", or "ignore"
))
# Verify
result = guard.verify({"action": "DELETE", "user_level": 2})
print(result.allowed) # False
print(result.violations) # ['strict_delete']Documentación completa: Introducción · Especificación de sintaxis · Referencia de CLI · Filosofía
Hoja de ruta
✅ Hecho: Lenguaje central y analizador · Verificación Z3 · Tiempo de ejecución con fallo cerrado · Integración con LangChain · CLI (verificar, simular, repl, formal) · Servidor MCP · Verificación de modelos TLA⁺ con TLC real · Abstracción de predicados · Análisis de contraejemplos · Despliegue en producción en Chimera v1.7.0
🚧 En progreso: Versionado de políticas · Integración con LangGraph
🔮 Planeado: LlamaIndex y AutoGen · Composición de múltiples políticas · Recarga en caliente · Mercado de políticas · Plantillas en la nube
🔒 Empresa (Investigación): Inferencia causal · Multi-tenencia
Contribución
¡Damos la bienvenida a las contribuciones! Empiece con good first issue o consulte CONTRIBUTING.md.
Áreas de alto impacto: Políticas de ejemplo del mundo real · Integraciones de marcos · Editor de políticas basado en web · Cobertura de pruebas
Licencia
Apache 2.0 (modelo open-core). El lenguaje completo, el compilador, el verificador Z3, el tiempo de ejecución, la CLI, el servidor MCP y todos los ejemplos son de código abierto. Consulte LICENSE.
Creado con ❤️ por Chimera Protocol · Problemas · Discusiones · Correo electrónico
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Chimera-Protocol/csl-core'
If you have feedback or need assistance with the MCP directory API, please join our Discord server