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,
)
ParameterTypeDefaultDescription
project_namestr / NoneFI_PROJECT_NAME env varProject identifier in the dashboard
project_typeProjectTypeEXPERIMENTEXPERIMENT (dev, supports eval tags) or OBSERVE (production)
project_version_namestr / NoneNoneVersion label (EXPERIMENT only)
eval_tagslist / NoneNoneEvaluation configs for automated span scoring (EXPERIMENT only)
metadatadict / NoneNoneCustom metadata attached to all spans
batchboolTrueTrue = BatchSpanProcessor, False = SimpleSpanProcessor
set_global_tracer_providerboolFalseRegister as the global OpenTelemetry default
headersdict / NoneNoneCustom HTTP headers (auto-populated from API keys if not set)
verboseboolTruePrint configuration details on startup
transportTransportHTTPHTTP or GRPC
semantic_conventionSemanticConventionFIAttribute 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,
});
ParameterTypeDefaultDescription
projectNamestringFI_PROJECT_NAME env varProject identifier
projectTypeProjectTypeEXPERIMENTEXPERIMENT or OBSERVE
projectVersionNamestringundefinedVersion label (EXPERIMENT only)
evalTagsEvalTag[]undefinedEvaluation configs (EXPERIMENT only)
sessionNamestringundefinedSession name (OBSERVE only)
metadataRecordundefinedCustom metadata
batchbooleanfalseUse batch span processor
setGlobalTracerProviderbooleantrueRegister as global provider
headersFIHeadersundefinedCustom HTTP headers
verbosebooleanfalseVerbose logging
endpointstringFI_BASE_URLCustom endpoint
transportTransportHTTPHTTP 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 methodDefaultDescription
baseUrl(String)FI_BASE_URL env varBackend endpoint
apiKey(String)FI_API_KEY env varAPI authentication
secretKey(String)FI_SECRET_KEY env varSecondary authentication
projectName(String)FI_PROJECT_NAME env varProject identifier
serviceName(String)project nameOpenTelemetry service name
hideInputs(boolean)falseSuppress input values
hideOutputs(boolean)falseSuppress output values
hideInputMessages(boolean)falseSuppress input messages
hideOutputMessages(boolean)falseSuppress output messages
enableConsoleExporter(boolean)falseLog spans to console
batchSize(int)512Span batch size
exportIntervalMs(long)5000Export 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: 5000

The 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();
});
PropertyTypeDefaultDescription
ProjectNamestringFI_PROJECT_NAME env varProject identifier
ProjectTypeProjectTypeExperimentExperiment or Observe
ProjectVersionNamestringnullVersion label (Experiment only)
EvalTagsList<EvalTag>nullEvaluation configs (Experiment only)
MetadataDictionarynullCustom metadata
BatchbooltrueUse batch span processor
SetGlobalTracerProviderbooltrueRegister as global provider
TransportTransportHttpHttp or Grpc
ApiKeystringFI_API_KEY env varAPI key
SecretKeystringFI_SECRET_KEY env varSecret key
TraceConfigTraceConfignullPrivacy/masking configuration
EnableConsoleExporterboolfalseLog spans to console
VerbosebooltruePrint config on startup

Returns: FITracer - use for creating custom spans.

ProjectType

ValueUse for
EXPERIMENTDevelopment and testing. Supports eval tags and version names.
OBSERVEProduction 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.

ValueAttribute prefixUse for
OTEL_GENAIgen_ai.*Recommended - OpenTelemetry GenAI standard
FIfi.*Legacy Future AGI format (default)
OPENINFERENCEopeninference.*Arize Phoenix compatibility
OPENLLMETRYtraceloop.*Traceloop / OpenLLMetry compatibility

Tip

Pass semantic_convention=SemanticConvention.OTEL_GENAI for the best interoperability with other OpenTelemetry tools.

Was this page helpful?

Questions & Discussion