
# traceAI
**Open-source observability for AI applications - trace every LLM call, prompt, token, retrieval step, and agent decision.**
Built on [OpenTelemetry](https://opentelemetry.io/), traceAI sends structured traces to any OTel-compatible backend (Datadog, Grafana, Jaeger, Future AGI, and more). No new vendor. No new dashboard.
[](LICENSE)
[](https://www.python.org/)
[](https://www.typescriptlang.org/)
[](https://openjdk.org/)
[](https://dotnet.microsoft.com/)
[](https://opentelemetry.io/)
[](https://pypi.org/project/fi-instrumentation-otel/)
[](https://www.npmjs.com/package/@traceai/fi-core)
[](https://www.nuget.org/packages/fi-instrumentation-otel)
[Documentation](https://docs.futureagi.com/integrations/overview) • [Examples](https://docs.futureagi.com/cookbook/cookbook8/How-To-Implement-Observability) • [Slack](https://join.slack.com/t/future-agi/shared_invite/zt-3gqwrdf2p-4oj1LVPqkQIoiS_OSrFL2A) • [PyPI](https://pypi.org/project/fi-instrumentation-otel/) • [npm](https://www.npmjs.com/package/@traceai/fi-core) • [NuGet](https://www.nuget.org/packages/fi-instrumentation-otel)
---
---
## What is traceAI?
Your agent calls an LLM, retrieves context, invokes a tool, and returns an answer. When that answer is wrong, you need to know exactly where it broke - which retrieval missed, which tool returned stale data, which prompt drifted.
**traceAI** captures every LLM call, prompt, token count, retrieval step, and agent decision as structured OpenTelemetry traces. Your traces live natively in Datadog, Grafana, Future AGI, Jaeger, or any OTel-compatible backend. No new vendor. No new dashboard.
- **Drop-in instrumentation** for 50+ AI frameworks across 4 languages
- **OpenTelemetry-native** - works with any OTel-compatible backend
- **Semantic conventions** for LLM calls, agents, tools, retrieval, and vector databases
- **Python, TypeScript, Java, and C#** with consistent APIs
---
## Table of Contents
- [Key Features](#key-features)
- [Quickstart](#quickstart)
- [Python](#python-quickstart)
- [TypeScript](#typescript-quickstart)
- [Java](#java-quickstart)
- [C#](#c-quickstart)
- [Supported Frameworks](#supported-frameworks)
- [Python](#python)
- [TypeScript](#typescript)
- [Java](#java)
- [C#](#c)
- [Compatibility Matrix](#compatibility-matrix)
- [Architecture](#architecture)
- [Roadmap](#roadmap)
- [Contributing](#contributing)
- [Contributors](#contributors)
- [Resources](#resources)
- [Connect With Us](#connect-with-us)
## Key Features
| Feature | Description |
|---------|-------------|
| **Standardized Tracing** | Maps AI workflows to consistent OpenTelemetry spans and attributes |
| **Drop-in Setup** | Add 3 lines to your existing code - no refactoring needed |
| **Multi-Framework** | 50+ integrations across Python, TypeScript, Java, and C# |
| **Vendor Agnostic** | Works with any OpenTelemetry-compatible backend |
| **Rich Context** | Captures prompts, completions, tokens, model params, tool calls, and more |
| **Production-grade** | Async support, streaming, error handling, and low-overhead tracing |
---
## Quickstart
### Python Quickstart
**1. Install**
```bash
pip install traceai-openai
```
**2. Instrument your application**
```python
import os
from fi_instrumentation import register
from fi_instrumentation.fi_types import ProjectType
from traceai_openai import OpenAIInstrumentor
import openai
# Set up environment variables
os.environ["FI_API_KEY"] = ""
os.environ["FI_SECRET_KEY"] = ""
os.environ["OPENAI_API_KEY"] = ""
# Register tracer provider
trace_provider = register(
project_type=ProjectType.OBSERVE,
project_name="my_ai_app"
)
# Instrument OpenAI
OpenAIInstrumentor().instrument(tracer_provider=trace_provider)
# Use OpenAI as normal - traces are captured automatically
response = openai.chat.completions.create(
model="gpt-4.1",
messages=[{"role": "user", "content": "Hello!"}]
)
```
> **Tip:** Swap `traceai-openai` for any supported framework (e.g., `traceai-langchain`, `traceai-anthropic`)
---
### TypeScript Quickstart
**1. Install**
```bash
npm install @traceai/openai @traceai/fi-core
```
**2. Instrument your application**
```typescript
import { register, ProjectType } from "@traceai/fi-core";
import { OpenAIInstrumentation } from "@traceai/openai";
import { registerInstrumentations } from "@opentelemetry/instrumentation";
import OpenAI from "openai";
// Register tracer provider
const tracerProvider = register({
projectName: "my_ai_app",
projectType: ProjectType.OBSERVE,
});
// Register OpenAI instrumentation (before creating client!)
registerInstrumentations({
tracerProvider,
instrumentations: [new OpenAIInstrumentation()],
});
// Use OpenAI as normal - traces are captured automatically
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const response = await openai.chat.completions.create({
model: "gpt-4.1",
messages: [{ role: "user", content: "Hello!" }],
});
```
---
### Java Quickstart
**1. Add dependency** (via [JitPack](https://jitpack.io/#future-agi/traceAI))
```xml
com.github.future-agi.traceAI
traceai-java-openai
v1.0.0
```
**2. Instrument your application**
```java
import ai.traceai.TraceAI;
import ai.traceai.TraceConfig;
import ai.traceai.openai.TracedOpenAIClient;
// Initialize tracing
TraceAI.init(TraceConfig.builder()
.apiKey("your-api-key")
.secretKey("your-secret-key")
.projectName("my_ai_app")
.build());
// Wrap your OpenAI client
var tracedClient = new TracedOpenAIClient(openAIClient);
// Use as normal - traces are captured automatically
var response = tracedClient.createChatCompletion(request);
```
---
### C# Quickstart
**1. Install**
```bash
dotnet add package fi-instrumentation-otel
```
**2. Instrument your application**
```csharp
using FIInstrumentation;
using FIInstrumentation.Types;
// Register tracer
var tracer = TraceAI.Register(opts =>
{
opts.ProjectName = "my_ai_app";
opts.ProjectType = ProjectType.Observe;
opts.ApiKey = "your-api-key";
opts.SecretKey = "your-secret-key";
});
// Use the tracer with your AI calls
```
---
## Supported Frameworks
### Python
| Package | Description | Version |
|---------|-------------|----------|
| [`fi-instrumentation-otel`](https://pypi.org/project/fi-instrumentation-otel/) | Core instrumentation library | [](https://pypi.org/project/fi-instrumentation-otel/) |
#### LLM Providers
| Package | Description | Version |
|---------|-------------|----------|
| [`traceAI-openai`](https://pypi.org/project/traceAI-openai/) | OpenAI | [](https://pypi.org/project/traceAI-openai/) |
| [`traceAI-anthropic`](https://pypi.org/project/traceAI-anthropic/) | Anthropic | [](https://pypi.org/project/traceAI-anthropic/) |
| [`traceAI-google-genai`](https://pypi.org/project/traceAI-google-genai/) | Google Generative AI | [](https://pypi.org/project/traceAI-google-genai/) |
| [`traceAI-vertexai`](https://pypi.org/project/traceAI-vertexai/) | Google Vertex AI | [](https://pypi.org/project/traceAI-vertexai/) |
| [`traceAI-bedrock`](https://pypi.org/project/traceAI-bedrock/) | AWS Bedrock | [](https://pypi.org/project/traceAI-bedrock/) |
| [`traceAI-mistralai`](https://pypi.org/project/traceAI-mistralai/) | Mistral AI | [](https://pypi.org/project/traceAI-mistralai/) |
| [`traceAI-groq`](https://pypi.org/project/traceAI-groq/) | Groq | [](https://pypi.org/project/traceAI-groq/) |
| [`traceAI-litellm`](https://pypi.org/project/traceAI-litellm/) | LiteLLM | [](https://pypi.org/project/traceAI-litellm/) |
| [`traceAI-cohere`](https://pypi.org/project/traceAI-cohere/) | Cohere | [](https://pypi.org/project/traceAI-cohere/) |
| [`traceAI-ollama`](https://pypi.org/project/traceAI-ollama/) | Ollama | [](https://pypi.org/project/traceAI-ollama/) |
| [`traceAI-together`](https://pypi.org/project/traceAI-together/) | Together AI | [](https://pypi.org/project/traceAI-together/) |
| [`traceAI-deepseek`](https://pypi.org/project/traceAI-deepseek/) | DeepSeek | [](https://pypi.org/project/traceAI-deepseek/) |
| [`traceAI-fireworks`](https://pypi.org/project/traceAI-fireworks/) | Fireworks AI | [](https://pypi.org/project/traceAI-fireworks/) |
| [`traceAI-cerebras`](https://pypi.org/project/traceAI-cerebras/) | Cerebras | [](https://pypi.org/project/traceAI-cerebras/) |
| [`traceAI-huggingface`](https://pypi.org/project/traceAI-huggingface/) | HuggingFace | [](https://pypi.org/project/traceAI-huggingface/) |
| [`traceAI-xai`](https://pypi.org/project/traceAI-xai/) | xAI (Grok) | [](https://pypi.org/project/traceAI-xai/) |
| [`traceAI-vllm`](https://pypi.org/project/traceAI-vllm/) | vLLM | [](https://pypi.org/project/traceAI-vllm/) |
| [`traceAI-minimax`](https://pypi.org/project/traceAI-minimax/) | MiniMax | [](https://pypi.org/project/traceAI-minimax/) |
#### Agent Frameworks
| Package | Description | Version |
|---------|-------------|----------|
| [`traceAI-langchain`](https://pypi.org/project/traceAI-langchain/) | LangChain | [](https://pypi.org/project/traceAI-langchain/) |
| [`traceAI-llamaindex`](https://pypi.org/project/traceAI-llamaindex/) | LlamaIndex | [](https://pypi.org/project/traceAI-llamaindex/) |
| [`traceAI-crewai`](https://pypi.org/project/traceAI-crewai/) | CrewAI | [](https://pypi.org/project/traceAI-crewai/) |
| [`traceAI-openai-agents`](https://pypi.org/project/traceAI-openai-agents/) | OpenAI Agents | [](https://pypi.org/project/traceAI-openai-agents/) |
| [`traceAI-smolagents`](https://pypi.org/project/traceAI-smolagents/) | SmolAgents | [](https://pypi.org/project/traceAI-smolagents/) |
| [`traceAI-autogen`](https://pypi.org/project/traceAI-autogen/) | AutoGen | [](https://pypi.org/project/traceAI-autogen/) |
| [`traceAI-google-adk`](https://pypi.org/project/traceAI-google-adk/) | Google ADK | [](https://pypi.org/project/traceAI-google-adk/) |
| [`traceAI-agno`](https://pypi.org/project/traceAI-agno/) | Agno | [](https://pypi.org/project/traceAI-agno/) |
| [`traceAI-pydantic-ai`](https://pypi.org/project/traceAI-pydantic-ai/) | Pydantic AI | [](https://pypi.org/project/traceAI-pydantic-ai/) |
| [`traceAI-claude-agent-sdk`](https://pypi.org/project/traceAI-claude-agent-sdk/) | Claude Agent SDK | [](https://pypi.org/project/traceAI-claude-agent-sdk/) |
| [`traceAI-strands`](https://pypi.org/project/traceAI-strands/) | AWS Strands Agents | [](https://pypi.org/project/traceAI-strands/) |
| [`traceAI-beeai`](https://pypi.org/project/traceAI-beeai/) | IBM BeeAI | [](https://pypi.org/project/traceAI-beeai/) |
#### Tools and Libraries
| Package | Description | Version |
|---------|-------------|----------|
| [`traceAI-haystack`](https://pypi.org/project/traceAI-haystack/) | Haystack | [](https://pypi.org/project/traceAI-haystack/) |
| [`traceAI-dspy`](https://pypi.org/project/traceAI-dspy/) | DSPy | [](https://pypi.org/project/traceAI-dspy/) |
| [`traceAI-guardrails`](https://pypi.org/project/traceAI-guardrails/) | Guardrails AI | [](https://pypi.org/project/traceAI-guardrails/) |
| [`traceAI-instructor`](https://pypi.org/project/traceAI-instructor/) | Instructor | [](https://pypi.org/project/traceAI-instructor/) |
| [`traceAI-portkey`](https://pypi.org/project/traceAI-portkey/) | Portkey | [](https://pypi.org/project/traceAI-portkey/) |
| [`traceAI-mcp`](https://pypi.org/project/traceAI-mcp/) | Model Context Protocol | [](https://pypi.org/project/traceAI-mcp/) |
| [`traceAI-pipecat`](https://pypi.org/project/traceAI-pipecat/) | Pipecat (Voice AI) | [](https://pypi.org/project/traceAI-pipecat/) |
| [`traceAI-livekit`](https://pypi.org/project/traceAI-livekit/) | LiveKit (Real-time) | [](https://pypi.org/project/traceAI-livekit/) |
#### Vector Databases
| Package | Description | Version |
|---------|-------------|----------|
| [`traceAI-pinecone`](https://pypi.org/project/traceAI-pinecone/) | Pinecone | [](https://pypi.org/project/traceAI-pinecone/) |
| [`traceAI-chromadb`](https://pypi.org/project/traceAI-chromadb/) | ChromaDB | [](https://pypi.org/project/traceAI-chromadb/) |
| [`traceAI-qdrant`](https://pypi.org/project/traceAI-qdrant/) | Qdrant | [](https://pypi.org/project/traceAI-qdrant/) |
| [`traceAI-weaviate`](https://pypi.org/project/traceAI-weaviate/) | Weaviate | [](https://pypi.org/project/traceAI-weaviate/) |
| [`traceAI-milvus`](https://pypi.org/project/traceAI-milvus/) | Milvus | [](https://pypi.org/project/traceAI-milvus/) |
| [`traceAI-lancedb`](https://pypi.org/project/traceAI-lancedb/) | LanceDB | [](https://pypi.org/project/traceAI-lancedb/) |
| [`traceAI-mongodb`](https://pypi.org/project/traceAI-mongodb/) | MongoDB Atlas Vector Search | [](https://pypi.org/project/traceAI-mongodb/) |
| [`traceAI-pgvector`](https://pypi.org/project/traceAI-pgvector/) | pgvector (PostgreSQL) | [](https://pypi.org/project/traceAI-pgvector/) |
| [`traceAI-redis`](https://pypi.org/project/traceAI-redis/) | Redis Vector Search | [](https://pypi.org/project/traceAI-redis/) |
---
### TypeScript
| Package | Description | Version |
|---------|-------------|----------|
| [`@traceai/fi-core`](https://www.npmjs.com/package/@traceai/fi-core) | Core instrumentation library | [](https://www.npmjs.com/package/@traceai/fi-core) |
| [`@traceai/fi-semantic-conventions`](https://www.npmjs.com/package/@traceai/fi-semantic-conventions) | Semantic conventions | [](https://www.npmjs.com/package/@traceai/fi-semantic-conventions) |
#### LLM Providers
| Package | Description | Version |
|---------|-------------|----------|
| [`@traceai/openai`](https://www.npmjs.com/package/@traceai/openai) | OpenAI | [](https://www.npmjs.com/package/@traceai/openai) |
| [`@traceai/anthropic`](https://www.npmjs.com/package/@traceai/anthropic) | Anthropic | [](https://www.npmjs.com/package/@traceai/anthropic) |
| [`@traceai/google-genai`](https://www.npmjs.com/package/@traceai/google-genai) | Google Generative AI | [](https://www.npmjs.com/package/@traceai/google-genai) |
| [`@traceai/fi-instrumentation-vertexai`](https://www.npmjs.com/package/@traceai/fi-instrumentation-vertexai) | Google Vertex AI | [](https://www.npmjs.com/package/@traceai/fi-instrumentation-vertexai) |
| [`@traceai/bedrock`](https://www.npmjs.com/package/@traceai/bedrock) | AWS Bedrock | [](https://www.npmjs.com/package/@traceai/bedrock) |
| [`@traceai/mistral`](https://www.npmjs.com/package/@traceai/mistral) | Mistral AI | [](https://www.npmjs.com/package/@traceai/mistral) |
| [`@traceai/groq`](https://www.npmjs.com/package/@traceai/groq) | Groq | [](https://www.npmjs.com/package/@traceai/groq) |
| [`@traceai/cohere`](https://www.npmjs.com/package/@traceai/cohere) | Cohere | [](https://www.npmjs.com/package/@traceai/cohere) |
| [`@traceai/ollama`](https://www.npmjs.com/package/@traceai/ollama) | Ollama | [](https://www.npmjs.com/package/@traceai/ollama) |
| [`@traceai/together`](https://www.npmjs.com/package/@traceai/together) | Together AI | [](https://www.npmjs.com/package/@traceai/together) |
| [`@traceai/deepseek`](https://www.npmjs.com/package/@traceai/deepseek) | DeepSeek | [](https://www.npmjs.com/package/@traceai/deepseek) |
| [`@traceai/fireworks`](https://www.npmjs.com/package/@traceai/fireworks) | Fireworks AI | [](https://www.npmjs.com/package/@traceai/fireworks) |
| [`@traceai/cerebras`](https://www.npmjs.com/package/@traceai/cerebras) | Cerebras | [](https://www.npmjs.com/package/@traceai/cerebras) |
| [`@traceai/huggingface`](https://www.npmjs.com/package/@traceai/huggingface) | HuggingFace | [](https://www.npmjs.com/package/@traceai/huggingface) |
| [`@traceai/xai`](https://www.npmjs.com/package/@traceai/xai) | xAI (Grok) | [](https://www.npmjs.com/package/@traceai/xai) |
| [`@traceai/vllm`](https://www.npmjs.com/package/@traceai/vllm) | vLLM | [](https://www.npmjs.com/package/@traceai/vllm) |
#### Agent Frameworks
| Package | Description | Version |
|---------|-------------|----------|
| [`@traceai/langchain`](https://www.npmjs.com/package/@traceai/langchain) | LangChain.js | [](https://www.npmjs.com/package/@traceai/langchain) |
| [`@traceai/llamaindex`](https://www.npmjs.com/package/@traceai/llamaindex) | LlamaIndex | [](https://www.npmjs.com/package/@traceai/llamaindex) |
| [`@traceai/openai-agents`](https://www.npmjs.com/package/@traceai/openai-agents) | OpenAI Agents | [](https://www.npmjs.com/package/@traceai/openai-agents) |
| [`@traceai/fi-instrumentation-google-adk`](https://www.npmjs.com/package/@traceai/fi-instrumentation-google-adk) | Google ADK | [](https://www.npmjs.com/package/@traceai/fi-instrumentation-google-adk) |
| [`@traceai/mastra`](https://www.npmjs.com/package/@traceai/mastra) | Mastra | [](https://www.npmjs.com/package/@traceai/mastra) |
| [`@traceai/beeai`](https://www.npmjs.com/package/@traceai/beeai) | IBM BeeAI | [](https://www.npmjs.com/package/@traceai/beeai) |
| [`@traceai/strands`](https://www.npmjs.com/package/@traceai/strands) | AWS Strands Agents | [](https://www.npmjs.com/package/@traceai/strands) |
#### Tools and Libraries
| Package | Description | Version |
|---------|-------------|----------|
| [`@traceai/vercel`](https://www.npmjs.com/package/@traceai/vercel) | Vercel AI SDK | [](https://www.npmjs.com/package/@traceai/vercel) |
| [`@traceai/guardrails`](https://www.npmjs.com/package/@traceai/guardrails) | Guardrails AI | [](https://www.npmjs.com/package/@traceai/guardrails) |
| [`@traceai/instructor`](https://www.npmjs.com/package/@traceai/instructor) | Instructor | [](https://www.npmjs.com/package/@traceai/instructor) |
| [`@traceai/portkey`](https://www.npmjs.com/package/@traceai/portkey) | Portkey | [](https://www.npmjs.com/package/@traceai/portkey) |
| [`@traceai/mcp`](https://www.npmjs.com/package/@traceai/mcp) | Model Context Protocol | [](https://www.npmjs.com/package/@traceai/mcp) |
| [`@traceai/fi-instrumentation-pipecat`](https://www.npmjs.com/package/@traceai/fi-instrumentation-pipecat) | Pipecat (Voice AI) | [](https://www.npmjs.com/package/@traceai/fi-instrumentation-pipecat) |
| [`@traceai/fi-instrumentation-livekit`](https://www.npmjs.com/package/@traceai/fi-instrumentation-livekit) | LiveKit (Real-time) | [](https://www.npmjs.com/package/@traceai/fi-instrumentation-livekit) |
#### Vector Databases
| Package | Description | Version |
|---------|-------------|----------|
| [`@traceai/pinecone`](https://www.npmjs.com/package/@traceai/pinecone) | Pinecone | [](https://www.npmjs.com/package/@traceai/pinecone) |
| [`@traceai/chromadb`](https://www.npmjs.com/package/@traceai/chromadb) | ChromaDB | [](https://www.npmjs.com/package/@traceai/chromadb) |
| [`@traceai/qdrant`](https://www.npmjs.com/package/@traceai/qdrant) | Qdrant | [](https://www.npmjs.com/package/@traceai/qdrant) |
| [`@traceai/weaviate`](https://www.npmjs.com/package/@traceai/weaviate) | Weaviate | [](https://www.npmjs.com/package/@traceai/weaviate) |
| [`@traceai/milvus`](https://www.npmjs.com/package/@traceai/milvus) | Milvus | [](https://www.npmjs.com/package/@traceai/milvus) |
| [`@traceai/lancedb`](https://www.npmjs.com/package/@traceai/lancedb) | LanceDB | [](https://www.npmjs.com/package/@traceai/lancedb) |
| [`@traceai/mongodb`](https://www.npmjs.com/package/@traceai/mongodb) | MongoDB Atlas Vector Search | [](https://www.npmjs.com/package/@traceai/mongodb) |
| [`@traceai/pgvector`](https://www.npmjs.com/package/@traceai/pgvector) | pgvector (PostgreSQL) | [](https://www.npmjs.com/package/@traceai/pgvector) |
| [`@traceai/redis`](https://www.npmjs.com/package/@traceai/redis) | Redis Vector Search | [](https://www.npmjs.com/package/@traceai/redis) |
---
### Java
Available via [JitPack](https://jitpack.io/#future-agi/traceAI). Add the JitPack repository:
```xml
jitpack.io
https://jitpack.io
```
| Package | Description |
|---------|-------------|
| `traceai-java-core` | Core instrumentation library |
#### LLM Providers
| Package | Description |
|---------|-------------|
| `traceai-java-openai` | OpenAI |
| `traceai-java-azure-openai` | Azure OpenAI |
| `traceai-java-anthropic` | Anthropic |
| `traceai-java-google-genai` | Google Generative AI |
| `traceai-java-cohere` | Cohere |
| `traceai-java-ollama` | Ollama |
| `traceai-java-bedrock` | AWS Bedrock |
| `traceai-java-vertexai` | Google Vertex AI |
| `traceai-java-watsonx` | IBM Watsonx |
#### Agent Frameworks
| Package | Description |
|---------|-------------|
| `traceai-langchain4j` | LangChain4j |
| `traceai-spring-ai` | Spring AI |
| `traceai-spring-boot-starter` | Spring Boot Auto-Configuration |
| `traceai-java-semantic-kernel` | Microsoft Semantic Kernel |
#### Vector Databases
| Package | Description |
|---------|-------------|
| `traceai-java-pinecone` | Pinecone |
| `traceai-java-qdrant` | Qdrant |
| `traceai-java-milvus` | Milvus |
| `traceai-java-weaviate` | Weaviate |
| `traceai-java-chromadb` | ChromaDB |
| `traceai-java-mongodb` | MongoDB Atlas Vector Search |
| `traceai-java-redis` | Redis Vector Search |
| `traceai-java-azure-search` | Azure AI Search |
| `traceai-java-pgvector` | pgvector (PostgreSQL) |
| `traceai-java-elasticsearch` | Elasticsearch |
---
### C#
Available on [NuGet](https://www.nuget.org/packages/fi-instrumentation-otel).
| Package | Description | Version |
|---------|-------------|----------|
| [`fi-instrumentation-otel`](https://www.nuget.org/packages/fi-instrumentation-otel) | Core instrumentation library | [](https://www.nuget.org/packages/fi-instrumentation-otel) |
---
## Compatibility Matrix
| Category | Framework | Python | TypeScript | Java | C# |
|----------|-----------|--------|------------|------|-----|
| **LLM Providers** | OpenAI | ✅ | ✅ | ✅ | ✅ |
| | Anthropic | ✅ | ✅ | ✅ | |
| | AWS Bedrock | ✅ | ✅ | ✅ | |
| | Google Vertex AI | ✅ | ✅ | ✅ | |
| | Google Generative AI | ✅ | ✅ | ✅ | |
| | Mistral AI | ✅ | ✅ | | |
| | Groq | ✅ | ✅ | | |
| | Cohere | ✅ | ✅ | ✅ | |
| | Ollama | ✅ | ✅ | ✅ | |
| | LiteLLM | ✅ | | | |
| | Together AI | ✅ | ✅ | | |
| | DeepSeek | ✅ | ✅ | | |
| | Fireworks AI | ✅ | ✅ | | |
| | Cerebras | ✅ | ✅ | | |
| | HuggingFace | ✅ | ✅ | | |
| | xAI (Grok) | ✅ | ✅ | | |
| | vLLM | ✅ | ✅ | | |
| | MiniMax | ✅ | | | |
| | Azure OpenAI | | | ✅ | |
| | IBM Watsonx | | | ✅ | |
| **Agent Frameworks** | LangChain | ✅ | ✅ | | |
| | LlamaIndex | ✅ | ✅ | | |
| | CrewAI | ✅ | | | |
| | AutoGen | ✅ | | | |
| | OpenAI Agents | ✅ | ✅ | | |
| | SmolAgents | ✅ | | | |
| | Google ADK | ✅ | ✅ | | |
| | Agno | ✅ | | | |
| | Pydantic AI | ✅ | | | |
| | Claude Agent SDK | ✅ | | | |
| | AWS Strands Agents | ✅ | ✅ | | |
| | IBM BeeAI | ✅ | ✅ | | |
| | Mastra | | ✅ | | |
| | LangChain4j | | | ✅ | |
| | Spring AI | | | ✅ | |
| | Semantic Kernel | | | ✅ | |
| **Tools & Libraries** | Haystack | ✅ | | | |
| | DSPy | ✅ | | | |
| | Guardrails AI | ✅ | ✅ | | |
| | Instructor | ✅ | ✅ | | |
| | Portkey | ✅ | ✅ | | |
| | Vercel AI SDK | | ✅ | | |
| | MCP | ✅ | ✅ | | |
| | Pipecat | ✅ | ✅ | | |
| | LiveKit | ✅ | ✅ | | |
| **Vector Databases** | Pinecone | ✅ | ✅ | ✅ | |
| | ChromaDB | ✅ | ✅ | ✅ | |
| | Qdrant | ✅ | ✅ | ✅ | |
| | Weaviate | ✅ | ✅ | ✅ | |
| | Milvus | ✅ | ✅ | ✅ | |
| | LanceDB | ✅ | ✅ | | |
| | MongoDB Atlas | ✅ | ✅ | ✅ | |
| | pgvector | ✅ | ✅ | ✅ | |
| | Redis | ✅ | ✅ | ✅ | |
| | Azure AI Search | | | ✅ | |
| | Elasticsearch | | | ✅ | |
> **Legend:** ✅ Supported | blank = not yet available
---
## Architecture
traceAI is built on top of OpenTelemetry and follows standard OTel instrumentation patterns:
**Full OpenTelemetry Compatibility**
- Works with any OTel-compatible backend
- Standard OTLP exporters (HTTP/gRPC)
- Compatible with existing OTel setups
**Bring Your Own Configuration**
You can use traceAI with your own OpenTelemetry setup:
Python: Custom TracerProvider & Exporters
```python
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from traceai_openai import OpenAIInstrumentor
# Set up your own tracer provider
tracer_provider = TracerProvider()
trace.set_tracer_provider(tracer_provider)
# Add custom exporters (example with Future AGI)
otlp_exporter = OTLPSpanExporter(
endpoint="https://api.futureagi.com/tracer/v1/traces",
headers={
"X-API-KEY": "your-api-key",
"X-SECRET-KEY": "your-secret-key"
}
)
tracer_provider.add_span_processor(BatchSpanProcessor(otlp_exporter))
# Instrument with traceAI
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)
```
TypeScript: Custom TracerProvider, Span Processors & Headers
```typescript
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { Resource } from "@opentelemetry/resources";
import { registerInstrumentations } from "@opentelemetry/instrumentation";
import { OpenAIInstrumentation } from "@traceai/openai";
const provider = new NodeTracerProvider({
resource: new Resource({ "service.name": "my-ai-service" }),
});
const exporter = new OTLPTraceExporter({
url: "https://api.futureagi.com/tracer/v1/traces",
headers: {
"X-API-KEY": process.env.FI_API_KEY!,
"X-SECRET-KEY": process.env.FI_SECRET_KEY!,
},
});
provider.addSpanProcessor(new BatchSpanProcessor(exporter));
provider.register();
registerInstrumentations({
tracerProvider: provider,
instrumentations: [new OpenAIInstrumentation()],
});
```
**What Gets Captured**
traceAI automatically captures rich telemetry data:
- **Prompts & Completions**: Full request/response content
- **Token Usage**: Input, output, and total tokens
- **Model Parameters**: Temperature, top_p, max_tokens, etc.
- **Tool Calls**: Function/tool names, arguments, and results
- **Streaming**: Individual chunks with delta tracking
- **Errors**: Detailed error context and stack traces
- **Timing**: Latency at each step of the AI workflow
All data follows [OpenTelemetry Semantic Conventions for GenAI](https://opentelemetry.io/docs/specs/semconv/gen-ai/).
---
## Roadmap
- **Go language support**
- **Sampling strategies** for high-volume production environments
- **Continuous semantic convention updates** as the OTel GenAI spec evolves
- **Evaluation integration** connecting traces to quality measurement pipelines
- **Expanded agent framework coverage**
Request features or report bugs on [GitHub Issues](https://github.com/future-agi/traceAI/issues).
---
## Contributing
We welcome contributions! Read our **[Contributing Guide](CONTRIBUTING.md)** for details.
1. **Fork** the repository
2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
3. **Commit** your changes (`git commit -m 'Add amazing feature'`)
4. **Push** to the branch (`git push origin feature/amazing-feature`)
5. **Open** a Pull Request
**Found a bug?** [Open an issue](https://github.com/future-agi/traceAI/issues/new) with a minimal reproduction.
---
## Contributors
---
## Resources
| Resource | Description |
|----------|-------------|
| [Website](https://www.futureagi.com/) | Learn more about Future AGI |
| [Documentation](https://docs.futureagi.com/) | Complete guides and API reference |
| [Cookbooks](https://docs.futureagi.com/cookbook/cookbook8/How-To-Implement-Observability) | Step-by-step implementation examples |
| [Feature Requests & Bugs](https://github.com/future-agi/traceAI/issues) | Request features or report issues |
| [Changelog](CHANGELOG.md) | All release notes and updates |
| [Contributing Guide](CONTRIBUTING.md) | How to contribute to traceAI |
| [Slack](https://join.slack.com/t/future-agi/shared_invite/zt-3gqwrdf2p-4oj1LVPqkQIoiS_OSrFL2A) | Join our community |
| [Issues](https://github.com/future-agi/traceAI/issues) | Report bugs or request features |
| [TraceAI Workshop](https://colab.research.google.com/drive/1Z6QFUhxZir5lFemmfjF3NqOBIP6CYUWb#scrollTo=LZbiyQ2KwD-B) | Workshop on tracing and evaluation |
---
## Connect With Us
[](https://www.futureagi.com/)
[](https://www.linkedin.com/company/futureagi)
[](https://x.com/FutureAGI_)
[](https://www.reddit.com/user/Future_AGI/submitted/)
[](https://substack.com/@futureagi)
---
**Built with ❤️ by the [Future AGI](https://www.futureagi.com/) team and [contributors](https://github.com/future-agi/traceAI/graphs/contributors).**
If traceAI helps you debug faster, a ⭐ helps more teams find us.
[🌐 futureagi.com](https://futureagi.com) · [📖 docs.futureagi.com](https://docs.futureagi.com) · [☁️ app.futureagi.com](https://app.futureagi.com)