Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions src/content/docs/community/integrations/future-agi.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
---
title: Trace and evaluate Strands agents with Future AGI
community: true
description: Future AGI integration
integrationType: integration
languages: Python
sidebar:
label: "Future AGI"
---


[Future AGI](https://futureagi.com) is an open-source e2e agent engineering and optimization platform that helps you ship self-improving AI agents. Strands traces export over OpenTelemetry, so they can be sent to the Future AGI tracer endpoint without any code changes to your agent.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue: The description says Future AGI is "open-source" but there's no link to a source repository. The links point to futureagi.com (a commercial product) and the PyPI package traceai-strands.

Suggestion: If Future AGI is open-source, add a link to the source repository. If it's a commercial platform with open-source integration packages, consider rewording to something like "Future AGI is an e2e agent engineering and optimization platform..." to avoid confusion.


This page walks through two setup paths:

1. The recommended `traceai-strands` package, which wires up the project resource attributes Future AGI uses to bucket spans into a named project.
2. A manual setup using only Strands' built-in OpenTelemetry support and OTLP environment variables.

## Prerequisites

Sign up at [app.futureagi.com](https://app.futureagi.com) and copy your `FI_API_KEY` and `FI_SECRET_KEY` from the dashboard.

```bash
export FI_API_KEY="your-fi-api-key"
export FI_SECRET_KEY="your-fi-secret-key"
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue: These environment variables are used in the code example below (Option 1) implicitly via register(), but the relationship isn't clear. The register() call presumably reads FI_API_KEY and FI_SECRET_KEY from the environment, but this isn't explicitly stated.

Suggestion: Add a brief note like "These are read automatically by the fi_instrumentation library." to make the connection explicit for users.


## Option 1: Recommended setup with `traceai-strands`

Install Strands with OpenTelemetry support and the Future AGI integration package:

```bash
pip install 'strands-agents[otel]' traceai-strands
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: The fi_instrumentation package dependency isn't explicitly listed in the install command. Is it installed as a dependency of traceai-strands, or does it need to be installed separately?

If it's a transitive dependency, this is fine. If not, the install command should include it:

pip install 'strands-agents[otel]' traceai-strands fi-instrumentation

```

Register the tracer once at startup, then attach it to Strands. The `register()` call sets all the resource attributes Future AGI needs to surface the project in the dashboard.

```python
from fi_instrumentation import register
from fi_instrumentation.fi_types import ProjectType
from traceai_strands import configure_strands_tracing

trace_provider = register(
project_type=ProjectType.OBSERVE,
project_name="my-strands-agent",
)
configure_strands_tracing(tracer_provider=trace_provider)

from strands import Agent

agent = Agent(
model="us.anthropic.claude-sonnet-4-20250514-v1:0",
system_prompt="You are a helpful assistant.",
)

response = agent("Hello!")
```

Open your project in the [Future AGI dashboard](https://app.futureagi.com) to inspect the run tree, prompts, completions, model parameters, token usage, and tool execution details.

## Option 2: Manual setup with `StrandsTelemetry`

If you would rather not add another package, you can configure Strands' built-in OTLP exporter directly. Future AGI's tracer endpoint accepts standard OTLP/HTTP at `https://api.futureagi.com/tracer/v1/traces`.

```bash
export OTEL_EXPORTER_OTLP_ENDPOINT="https://api.futureagi.com/tracer/v1/traces"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue: The standard OpenTelemetry convention is that OTEL_EXPORTER_OTLP_ENDPOINT should be a base URL (the SDK appends /v1/traces automatically), while OTEL_EXPORTER_OTLP_TRACES_ENDPOINT is the signal-specific variant that takes the full path.

Here you're using OTEL_EXPORTER_OTLP_ENDPOINT with the full /v1/traces path, which would typically result in the SDK posting to https://api.futureagi.com/tracer/v1/traces/v1/traces.

This is consistent with how other pages in this docs repo handle it — see agentcore_evaluation_dashboard.mdx which uses OTEL_EXPORTER_OTLP_TRACES_ENDPOINT for full-path endpoints.

Suggestion: Either use:

export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://api.futureagi.com/tracer/v1/traces"

or:

export OTEL_EXPORTER_OTLP_ENDPOINT="https://api.futureagi.com/tracer"

Please verify which approach works with your smoke test — it's possible Strands' setup_otlp_exporter() handles this differently, but it should be documented correctly to avoid user confusion.

export OTEL_EXPORTER_OTLP_HEADERS="x-api-key=${FI_API_KEY},x-secret-key=${FI_SECRET_KEY}"
export OTEL_RESOURCE_ATTRIBUTES="project_name=my-strands-agent,project_type=observe,project_version_name=DEFAULT"
```

```python
from strands.telemetry import StrandsTelemetry

StrandsTelemetry().setup_otlp_exporter()

from strands import Agent

agent = Agent(
model="us.anthropic.claude-sonnet-4-20250514-v1:0",
system_prompt="You are a helpful assistant.",
)

response = agent("Hello!")
```

The `project_name`, `project_type`, and `project_version_name` resource attributes are required for Future AGI to bucket spans into a named project — without them, traces are accepted but not surfaced in the dashboard. Option 1 sets these automatically.

## What gets traced

Once configured, every agent invocation, model call, tool execution, and event-loop cycle is captured as an OpenTelemetry span and forwarded to Future AGI. See the [Strands traces page](/docs/user-guide/observability-evaluation/traces) for the full attribute schema.

## Resources

- [`traceai-strands` on PyPI](https://pypi.org/project/traceai-strands/)
- [Future AGI Strands integration guide](https://docs.futureagi.com)
Loading