register()
Set up the tracer provider and connect to Future AGI with register().
Creates an OpenTelemetry tracer provider configured to export spans to your Future AGI dashboard.
from fi_instrumentation import register
from fi_instrumentation.fi_types import ProjectType, Transport
trace_provider = register(
project_name="my-project",
project_type=ProjectType.OBSERVE,
transport=Transport.HTTP,
batch=True,
verbose=True,
)
| Parameter | Type | Default | Description |
|---|---|---|---|
project_name | str / None | FI_PROJECT_NAME env var | Project identifier in the dashboard |
project_type | ProjectType | EXPERIMENT | EXPERIMENT (dev, supports eval tags) or OBSERVE (production) |
project_version_name | str / None | None | Version label (EXPERIMENT only) |
eval_tags | list / None | None | Evaluation configs for automated span scoring (EXPERIMENT only) |
metadata | dict / None | None | Custom metadata attached to all spans |
batch | bool | True | True = BatchSpanProcessor, False = SimpleSpanProcessor |
set_global_tracer_provider | bool | False | Register as the global OpenTelemetry default |
headers | dict / None | None | Custom HTTP headers (auto-populated from API keys if not set) |
verbose | bool | True | Print configuration details on startup |
transport | Transport | HTTP | HTTP or GRPC |
semantic_convention | SemanticConvention | FI | Attribute naming convention |
Returns: TracerProvider - pass this to .instrument(tracer_provider=...) on any instrumentor.
import { register, ProjectType, Transport } from "@traceai/fi-core";
const tracerProvider = register({
projectName: "my-project",
projectType: ProjectType.OBSERVE,
transport: Transport.HTTP,
batch: true,
verbose: true,
});
| Parameter | Type | Default | Description |
|---|---|---|---|
projectName | string | FI_PROJECT_NAME env var | Project identifier |
projectType | ProjectType | EXPERIMENT | EXPERIMENT or OBSERVE |
projectVersionName | string | undefined | Version label (EXPERIMENT only) |
evalTags | EvalTag[] | undefined | Evaluation configs (EXPERIMENT only) |
sessionName | string | undefined | Session name (OBSERVE only) |
metadata | Record | undefined | Custom metadata |
batch | boolean | false | Use batch span processor |
setGlobalTracerProvider | boolean | true | Register as global provider |
headers | FIHeaders | undefined | Custom HTTP headers |
verbose | boolean | false | Verbose logging |
endpoint | string | FI_BASE_URL | Custom endpoint |
transport | Transport | HTTP | HTTP or GRPC |
Returns: FITracerProvider
import ai.traceai.TraceAI;
import ai.traceai.TraceConfig;
// Option 1: From environment variables
TraceAI.initFromEnvironment();
// Option 2: Programmatic configuration
TraceAI.init(TraceConfig.builder()
.baseUrl("https://api.futureagi.com")
.apiKey("your-api-key")
.secretKey("your-secret-key")
.projectName("my-project")
.batchSize(512)
.exportIntervalMs(5000)
.build()
);
FITracer tracer = TraceAI.getTracer();
| Builder method | Default | Description |
|---|---|---|
baseUrl(String) | FI_BASE_URL env var | Backend endpoint |
apiKey(String) | FI_API_KEY env var | API authentication |
secretKey(String) | FI_SECRET_KEY env var | Secondary authentication |
projectName(String) | FI_PROJECT_NAME env var | Project identifier |
serviceName(String) | project name | OpenTelemetry service name |
hideInputs(boolean) | false | Suppress input values |
hideOutputs(boolean) | false | Suppress output values |
hideInputMessages(boolean) | false | Suppress input messages |
hideOutputMessages(boolean) | false | Suppress output messages |
enableConsoleExporter(boolean) | false | Log spans to console |
batchSize(int) | 512 | Span batch size |
exportIntervalMs(long) | 5000 | Export interval in ms |
For Spring Boot, add the starter dependency and configure via application.yml:
traceai:
enabled: true
base-url: https://api.futureagi.com
api-key: ${FI_API_KEY}
secret-key: ${FI_SECRET_KEY}
project-name: my-app
batch-size: 512
export-interval-ms: 5000The FITracer bean is auto-created and available for injection.
using FIInstrumentation;
using FIInstrumentation.Types;
var tracer = TraceAI.Register(opts =>
{
opts.ProjectName = "my-project";
opts.ProjectType = ProjectType.Observe;
opts.Transport = Transport.Http;
opts.Batch = true;
opts.Verbose = true;
opts.TraceConfig = TraceConfig.Builder()
.HideInputs(false)
.HideOutputs(false)
.Build();
});
| Property | Type | Default | Description |
|---|---|---|---|
ProjectName | string | FI_PROJECT_NAME env var | Project identifier |
ProjectType | ProjectType | Experiment | Experiment or Observe |
ProjectVersionName | string | null | Version label (Experiment only) |
EvalTags | List<EvalTag> | null | Evaluation configs (Experiment only) |
Metadata | Dictionary | null | Custom metadata |
Batch | bool | true | Use batch span processor |
SetGlobalTracerProvider | bool | true | Register as global provider |
Transport | Transport | Http | Http or Grpc |
ApiKey | string | FI_API_KEY env var | API key |
SecretKey | string | FI_SECRET_KEY env var | Secret key |
TraceConfig | TraceConfig | null | Privacy/masking configuration |
EnableConsoleExporter | bool | false | Log spans to console |
Verbose | bool | true | Print config on startup |
Returns: FITracer - use for creating custom spans.
ProjectType
| Value | Use for |
|---|---|
EXPERIMENT | Development and testing. Supports eval tags and version names. |
OBSERVE | Production monitoring. No eval tags, no version names. |
SemanticConvention (Python/TypeScript)
Controls how span attributes are named. We recommend OTEL_GENAI for standard OpenTelemetry GenAI conventions.
| Value | Attribute prefix | Use for |
|---|---|---|
OTEL_GENAI | gen_ai.* | Recommended - OpenTelemetry GenAI standard |
FI | fi.* | Legacy Future AGI format (default) |
OPENINFERENCE | openinference.* | Arize Phoenix compatibility |
OPENLLMETRY | traceloop.* | Traceloop / OpenLLMetry compatibility |
Tip
Pass semantic_convention=SemanticConvention.OTEL_GENAI for the best interoperability with other OpenTelemetry tools.
Questions & Discussion