npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@arizeai/phoenix-config

v0.5.1

Published

central configuration for Phoenix

Readme

Shared configuration parsing utilities used across @arizeai/phoenix-otel and @arizeai/phoenix-client. Provides typed helpers for reading Phoenix environment variables.

Installation

npm install @arizeai/phoenix-config

Environment Variables

| Variable | Constant | Description | | ---------------------------- | -------------------------------- | ----------------------------------------------------------------------------- | | PHOENIX_ENDPOINT | ENV_PHOENIX_ENDPOINT | Phoenix base URL for API access | | PHOENIX_HOST | ENV_PHOENIX_HOST | Phoenix server bind host; read only as a legacy fallback for the API base URL | | PHOENIX_API_KEY | ENV_PHOENIX_API_KEY | API key for Phoenix authentication | | PHOENIX_CLIENT_HEADERS | ENV_PHOENIX_CLIENT_HEADERS | JSON-encoded custom headers for client requests | | PHOENIX_COLLECTOR_ENDPOINT | ENV_PHOENIX_COLLECTOR_ENDPOINT | OTel collector endpoint URL | | PHOENIX_PORT | ENV_PHOENIX_PORT | Phoenix HTTP port (integer) | | PHOENIX_GRPC_PORT | ENV_PHOENIX_GRPC_PORT | Phoenix gRPC port for OpenTelemetry (integer) | | PHOENIX_PROJECT | ENV_PHOENIX_PROJECT | Default project name for project-scoped operations (canonical) | | PHOENIX_PROJECT_NAME | ENV_PHOENIX_PROJECT_NAME | Supported alias for PHOENIX_PROJECT | | PHOENIX_LOG_LEVEL | ENV_PHOENIX_LOG_LEVEL | Log verbosity: debug, info, warn, error, or silent | | PHOENIX_DISCOVER_CONFIG | ENV_PHOENIX_DISCOVER_CONFIG | Set to false to disable .env.phoenix file discovery |

Credential File Discovery (.env.phoenix)

When a Phoenix setting is not set in the process environment, the helpers look for a .env.phoenix file in the current working directory — walking up toward the filesystem root and stopping at the first match — and read PHOENIX_-prefixed keys from it (dotenv format):

Add .env.phoenix to your repository's ignore rules before storing credentials in this file (the Phoenix repository already ignores it).

# .env.phoenix
PHOENIX_COLLECTOR_ENDPOINT=http://localhost:6006
PHOENIX_API_KEY=your-api-key

Process environment variables always take precedence — the file never overrides anything already set — and keys without a PHOENIX_ prefix are ignored. Related settings are resolved as groups: when any credential (PHOENIX_API_KEY, PHOENIX_CLIENT_HEADERS) is set in the process environment, the file is ignored for the whole credential group, so process and file credentials are never mixed. Set PHOENIX_DISCOVER_CONFIG=false to disable discovery entirely.

An endpoint from .env.phoenix can still be combined with credentials supplied explicitly or by the process environment. Consumers emit a one-time warning in that case naming the credential source, endpoint variable, and discovered file; credential values are never logged. Source-aware consumers should use getStrFromEnvironmentWithSource() and getCredentialsFromEnvironmentWithSource() rather than reconstructing the source tier themselves.

Discovery results are cached per working directory for the lifetime of the process (including the absence of a file). Long-running processes that create the file after the first configuration lookup can call clearEnvFileCache() to re-discover it.

Usage

Reading All Configuration

import { getEnvironmentConfig } from "@arizeai/phoenix-config";

const config = getEnvironmentConfig();
// Returns a typed object with all recognized Phoenix env vars:
// {
//   PHOENIX_HOST: "http://localhost:6006",
//   PHOENIX_API_KEY: "my-key",
//   PHOENIX_CLIENT_HEADERS: { "X-Custom": "value" },
//   PHOENIX_COLLECTOR_ENDPOINT: "http://localhost:6006",
//   PHOENIX_PORT: 6006,
//   PHOENIX_GRPC_PORT: 4317,
//   PHOENIX_LOG_LEVEL: "info",
//   PHOENIX_PROJECT: "my-project",
// }

Resolving the Project Name

PHOENIX_PROJECT is the canonical project-name variable; PHOENIX_PROJECT_NAME is a supported alias. Use getProjectFromEnvironment() to resolve the pair with the correct precedence (PHOENIX_PROJECT wins; a one-time warning is emitted if both are set to conflicting values):

import { getProjectFromEnvironment } from "@arizeai/phoenix-config";

const project = getProjectFromEnvironment();
// Reads PHOENIX_PROJECT, then PHOENIX_PROJECT_NAME, or undefined if neither is set

Reading Individual Values

import {
  getStrFromEnvironment,
  getIntFromEnvironment,
  getHeadersFromEnvironment,
  ENV_PHOENIX_ENDPOINT,
  ENV_PHOENIX_PORT,
  ENV_PHOENIX_CLIENT_HEADERS,
} from "@arizeai/phoenix-config";

// Read a string environment variable
const endpoint = getStrFromEnvironment(ENV_PHOENIX_ENDPOINT);
// Returns "http://localhost:6006" or undefined

// Read an integer environment variable
const port = getIntFromEnvironment(ENV_PHOENIX_PORT);
// Returns 6006 or undefined

// Read and parse a JSON-encoded headers object
const headers = getHeadersFromEnvironment(ENV_PHOENIX_CLIENT_HEADERS);
// Returns { "Authorization": "Bearer token" } or undefined

Using Constants

import {
  ENV_PHOENIX_ENDPOINT,
  ENV_PHOENIX_HOST,
  ENV_PHOENIX_API_KEY,
  ENV_PHOENIX_CLIENT_HEADERS,
  ENV_PHOENIX_COLLECTOR_ENDPOINT,
  ENV_PHOENIX_PORT,
  ENV_PHOENIX_GRPC_PORT,
  ENV_PHOENIX_PROJECT_NAME,
  ENV_PHOENIX_PROJECT,
  ENV_PHOENIX_LOG_LEVEL,
} from "@arizeai/phoenix-config";

// Use constants instead of raw strings to avoid typos
const apiKey = process.env[ENV_PHOENIX_API_KEY];

Types

import type { EnvironmentConfig } from "@arizeai/phoenix-config";
// Inferred return type of getEnvironmentConfig()

Community

Join our community to connect with thousands of AI builders: