Observabilidad local-first · Nativo para MCP

Mira cada span de tus agentes.

Cada llamada LLM, herramienta MCP y token de coste. Sin nube, sin API keys.

$npx lookspan

Dashboard en http://127.0.0.1:3100.

✓ Datos 100% en local✓ Infra cero✓ Open source · MIT
lookspan · trace tr_a9f2c1 LIVE
langgraph ● ok duración 0 ms coste $0.0000
  • planneragent_step1284
  • plan.completionllm_call421
  • search_webtool_call268
  • vector.lookupretrieval154
  • synth.completionllm_call462

Vista de traza (waterfall de spans).

Funciona con tu stack

MCPLangGraphLangChainCrewAIOpenAI AgentsOpenTelemetryAGENT-OS
El problema

Cuando un agente falla, te quedas a ciegas.

Las herramientas clásicas exigen cuenta en la nube, claves de API y tus datos en servidores ajenos.

    Cuenta + facturación + API keys Tus prompts salen fuera Coste por evento o GB Latencia de red
Lookspan

Observabilidad local-first

  • Todo en tu máquina, los datos nunca salen
  • SQLite en ~/.lookspan/lookspan.db
  • Infraestructura cero
  • Un comando: npx lookspan
1
comando para arrancar
3100
dashboard en 127.0.0.1
5+
frameworks instrumentables
0
datos enviados a la nube
Características

Todo para depurar agentes, en local

Trazas, grafo de spans, costes y alertas.

Nativo para MCP

@lookspan/mcp emite un span por llamada.

Streaming en tiempo real

SSE en /api/stream: trazas en vivo, sin polling.

Grafo de spans interactivo

Cada traza como grafo navegable: jerarquía, duraciones, estados.

Seguimiento de costes

cost_usd por traza, con desglose por modelo.

SQLite local

~/.lookspan/lookspan.db. Tus datos, tu disco.

CLI en una línea

npx lookspan arranca servidor y dashboard.

Alertas configurables

Avísate cuando una traza falla, cuesta o tarda de más.

Privado por defecto

Escucha en 127.0.0.1 y redacta credenciales.

OpenTelemetry (OTLP)

Receptor en /v1/traces. Los gen_ai.* se mapean solos.

Cómo funciona

De tu agente al dashboard en tres pasos

Instrumenta, arranca y observa.

🤖AgenteMCP · LangGraph · CrewAI · HTTP
POST /api/ingest
⚙️Collectorvalida · normaliza · redacta
🗄️SQLite~/.lookspan/lookspan.db
SSE /api/stream
📊Dashboardtrazas · grafo · costes
01

Instrumenta

Envuelve tu cliente MCP o añade el callback. Una línea.

02

Arranca

npx lookspan escucha en :3100 y sirve el dashboard.

03

Observa

Cada span en vivo: duraciones, estados, tokens y coste.

Integraciones

Instrumentar tu agente es una línea

Elige tu framework. O cualquier agente que pueda hacer un POST.

// Cada callTool emite un span
import { wrapMcpClient, HttpSpanExporter } from '@lookspan/mcp';

const exporter = new HttpSpanExporter({
  endpoint: 'http://127.0.0.1:3100/api/ingest',
});

const { client } = wrapMcpClient(mcpClient, {
  exporter,
  agentId: 'mi-agente',
});

// Úsalo exactamente igual que antes
await client.callTool({ name: 'read_file', arguments: { path: '/tmp/foo.txt' } });
from lookspan import LookspanClient
from lookspan_langgraph import LookspanCallbackHandler

client = LookspanClient(endpoint="http://127.0.0.1:3100/api/ingest")
handler = LookspanCallbackHandler(client=client, agent_id="mi-agente")

# Pásalo como callback — LangGraph hace el resto
result = graph.invoke({"messages": []}, config={"callbacks": [handler]})
client.flush()
from crewai import Crew
from lookspan import LookspanClient
from lookspan_crewai import attach_lookspan

client = LookspanClient(endpoint="http://127.0.0.1:3100/api/ingest")
attach_lookspan(client, agent_id="research-crew")

# Una llamada instrumenta toda la crew
crew = Crew(agents=[...], tasks=[...])
crew.kickoff()
client.flush()
# Cualquier lenguaje que pueda hacer un POST
curl -X POST http://127.0.0.1:3100/api/ingest \
  -H "Content-Type: application/json" \
  -d '{
    "source": "mi-agente",
    "spans": [{
      "traceId": "tr_abc123",
      "spanId": "sp_def456",
      "type": "llm_call",
      "name": "completion",
      "status": "ok",
      "framework": "custom",
      "model": "gpt-4o",
      "provider": "openai"
    }]
  }'
# Reutiliza tu instrumentación OpenTelemetry
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://127.0.0.1:3100/v1/traces
export OTEL_EXPORTER_OTLP_PROTOCOL=http/json

# Los atributos gen_ai.* se mapean a modelo, proveedor y tokens.
Costes

Sabe cuánto cuesta cada agente

Coste en USD por traza, por modelo. Ninguna factura te pillará por sorpresa.

  • cost_usd por span y por traza
  • Desglose por modelo y proveedor
  • Latencia p50 / p95 / p99 y tasa de error
  • Alerta automática al superar tu umbral
Coste por modelo$2.84 / 7d
  • claude-sonnet-4-6$1.42
  • gpt-4o$0.93
  • text-embedding-3$0.31
  • claude-haiku-4-5$0.18
12.4k
trazas
1.8%
errores
840ms
p95

Ve tus agentes en 30 segundos.

Sin cuenta, sin claves, sin nube.

$npx lookspan