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
Frompyproject.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 hasfireweave==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.
- PyPI 0.1.0
- From checkout
Verified 2026-08-17: PyPI Re-check the index if you need extras or a newer tree than 0.1.0.
fireweave 0.1.0, requires Python >=3.10, homepage FireWeave-HQ/fireweave-sdk.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.
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.
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).
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
Capabilities
guardrails.check / guardrails.evaluate are stubs (UnsupportedCapability).
See Capabilities.
Adapters
Local OpenFeature helper (requires the openfeature extra):
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]:
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
Not in this SDK
- A
controlPointscamelCase namespace (Python iscontrol_points). - Working guardrails.
- OpenFeature Tracking.
Next
Quickstart
Offline evaluate in every language.
Compatibility
Type split, adapters, and conformance.