Skip to main content
fireweave is the FireWeave server SDK for Python. It evaluates control points, optionally registers targets, drives a release lifecycle, and records exposures and signals. OpenFeature and the wire protocol still use the parameter name flagKey.
FireWeave is pre-release. Core has zero runtime dependencies. OpenFeature and the PostHog adapter are extras.

Supported versions

From pyproject.toml: Classifiers list 3.10–3.13. CI runs 3.10 and 3.14. Treat >=3.10 as the supported floor; do not treat floating CI cells as a support guarantee.

Install

PyPI has fireweave==0.1.0 (verified 2026-08-17). pip install 'fireweave[openfeature]' is valid. Checkout remains an alternative for a specific commit or an unreleased tree.
Verified 2026-08-17: PyPI fireweave 0.1.0, requires Python >=3.10, homepage FireWeave-HQ/fireweave-sdk.
Re-check the index if you need extras or a newer tree than 0.1.0.
FIREWEAVE_POSTHOG_KEY and FIREWEAVE_POSTHOG_HOST appear in examples/python/ only. They are not SDK configuration. Remote-adapter env vars are FW_API_URL and FW_PROJECT_API_KEY.

Initialize

Construct the adapter and runtime explicitly. No hidden globals.
FireweaveClient is also a context manager: with FireweaveClient(runtime) as client:. initialize(backend_required=False). shutdown(timeout_ms=None) flushes exposures, then closes the adapter; never raises; idempotent. Default shutdown timeout: 10_000 ms. Async: from fireweave.aio import AsyncFireweaveClient — not in the core __all__. Wrappers offload via asyncio.to_thread.

Configuration and authentication

FireweaveConfig fields: project_api_key, host, personal_api_key, secret_key, local_evaluation, only_evaluate_locally, require_targeting_key, allow_anonymous, allowed_hosts, reserved_attribute_keys, limits, feature_flags_request_timeout_ms (default 3000), shutdown_timeout_ms (default 10000). FireweaveRemoteAdapter reads FW_API_URL and FW_PROJECT_API_KEY when options are omitted. Auth: Authorization: Bearer <key>. FW_DEPRECATION_WARNINGS=1 emits a one-shot notice when you use client.flags. Default DEFAULT_ALLOWED_HOSTS: five PostHog hosts (app.posthog.com, us.posthog.com, eu.posthog.com, us.i.posthog.com, eu.i.posthog.com) plus loopback. https off-loopback; http on loopback only. A literal "*" disables host pinning.
See Configuration and auth.

Targets

RegisterTargetOptions: kind, properties, environment. The remote adapter posts POST /v1/targets/register, retries once on retryable failures, and returns ok=False rather than raising. In-memory and local adapters report UnsupportedCapability. See Targeting and targets.

Control points

client.control_points is the product API. client.flags is the same object (deprecated alias). FlagType: BOOLEAN, STRING, INTEGER, FLOAT, OBJECT.
Also: get_object_value, get_details (alias of evaluate). Evaluation never raises. send_exposure defaults to false. See Control points.

Releases

Snake_case. set_context requires rollout_id and stamp_ids (stmp_ + 26 Crockford characters). Optional change_id (chg_ + 26).
Whether release transitions always reach fw-server is NEEDS VERIFICATION (compatibility known gap: Node/Python may record some paths in-process only).
See Releases.

Exposures

record(targeting_key, flag_key, variant=None, value=None, rollout_id=None). Dedup is on (targetingKey, flagKey, variant, value). send_exposure on evaluate defaults to false. shutdown() flushes first. See Exposures.

Signals

See Signals and outcomes.

Capabilities

guardrails.check / guardrails.evaluate are stubs (UnsupportedCapability). See Capabilities.

Adapters

Local OpenFeature helper (requires the openfeature extra):
In-process local evaluation via PostHog (secret_key / personal_api_key + local_evaluation) is available on the PostHog extra, not on the remote adapter. See Adapters.

OpenFeature

Not in core __init__. Requires fireweave[openfeature]:
Resolvers: resolve_boolean_details, resolve_string_details, resolve_integer_details, resolve_float_details, resolve_object_details. Ctor: backend_required=False, include_payload=False. Multi-provider is untested on Python. OpenFeature Tracking is not implemented. See OpenFeature.

Errors

ErrorKind has the same 15 PascalCase kinds. Concrete subclasses include NotReadyError, FlagNotFoundError, TypeMismatchError, InvalidContextError, TargetingKeyMissingError (subtype of InvalidContextError, OF code TARGETING_KEY_MISSING), AuthenticationError, AuthorizationError, RateLimitedError, TimeoutError_, NetworkError, BackendUnavailableError, MalformedResponseError, UnsupportedCapabilityError, ConfigurationError, AlreadyClosedError, InternalError. Evaluation never raises. See Errors.

Testing

InMemoryAdapter fixture fields used in tests: type, enabled, value, variant, optional matchAttribute. The repo test-server does not implement POST /v1/targets/register. See Testing.

Shutdown

See Initialize, ready, shutdown.

Not in this SDK

  • A controlPoints camelCase namespace (Python is control_points).
  • Working guardrails.
  • OpenFeature Tracking.

Next

Quickstart

Offline evaluate in every language.

Compatibility

Type split, adapters, and conformance.
Last modified on August 18, 2026