flieber-cli
flieber is the command-line and agent interface to Flieber's commerce data. It gives developers, scripts and AI agents (Claude, Cursor, Lovable, custom agents) one stable, versioned way to read a tenant's:
- actual sales: what each channel recorded, per product × store;
- adjusted sales: actuals corrected for stockouts, outliers and price effects, used as the forecast input;
- forecast: expected demand per product × store, from today on (
meta.last_nonzero_forecast_periodis the latest period with a non-zero forecast; core-service exposes no horizon).
Status: v0 in design. The architecture and contract v1 are ADR-0001 (Accepted). The code arrives through the issues in the Linear project "Data Layer Product (Vibee) | Backend" (team Flieber AI - R&D, milestone M3). Only the
0.0.1placeholder is published so far.
Shape
One Python package: a shared core, and several surfaces built on it.
┌──────────────────── flieber (Python package) ────────────────────┐
│ core: auth · GraphQL client · versioned tool contract · shaping │
└──────┬──────────────────────┬───────────────────────┬────────────┘
│ │ │
CLI `flieber …` MCP (local) `flieber mcp` MCP (hosted) `flieber mcp --http`
humans & scripts stdio, launched by container behind a stable URL,
Claude / Cursor used by the self-serve product
- Core
- Authentication with a Flieber public-API key (
FLIEBER_API_KEY, or the OS keyring or a 0600 config file, written byflieber auth login). - A client for core-service's public GraphQL API.
- The versioned tool contract: one definition per capability. It drives both the CLI command and the MCP tool, so the two cannot drift (a ratchet test checks the parity, ADR-0001 §7).
- Output shaping for humans (tables) and for LLMs (compact
{columns, rows}, point caps, pagination).
- Authentication with a Flieber public-API key (
- CLI:
flieber status,flieber listings,flieber products,flieber mapping,flieber sales,flieber adjusted,flieber forecast,flieber trends. JSON output is available for scripts. - MCP: the same capabilities as MCP tools, over stdio (local) or streamable HTTP (hosted, stateless). The hosted mode forwards the caller's own API key and stores nothing.
Design rule: customers bind to this contract, never to the raw GraphQL schema. The backend behind it may change; the contract changes only through versioning.
Principles and how to contribute
- What the project is, and the rules no change may break (the three signals, least privilege, no secrets at rest, bounded cost and output, honest results):
docs/00-invariants.md. It ranks above everything else. - How work is done (proof before done, test-first, ports and adapters, one authoritative path per process):
AGENTS.md. It applies to humans and agents alike. - Decisions:
docs/adr/.
Tooling (v0)
- Python ≥ 3.12.
- Packaging with
uvandpyproject.toml; installable asuvx flieber …/pipx install flieber. - Tests with
pytest, run asuv run pytest(ADR-0001 §8).
flieber is published on PyPI (the 0.0.1 placeholder, 2026-09-29, CI pipeline 2894945075). Releases, the version scheme and the changelog rules: docs/release.md.
Development
uv sync # Python ≥ 3.12, with the dev dependency group
uv run pytest # tests never reach the network
uv run ruff check src tests scripts && uv run ruff format --check src tests scripts
uv run python -m flieber.contract.document --write # after a contract change; review the diff
python scripts/pin_schema.py <core-service ref> # re-pin core-service's schema
scripts/release_check.sh # build and verify dist/ exactly as CI does (docs/release.md)
uv run flieber --env qa ping # the proof run against QA (needs a QA key)
How work is done here, including what counts as proof, is in AGENTS.md.
Related
- core-service: the public GraphQL API at
/api/graphql, and public-API keys with per-resource grants. - flieber-build-front: the self-serve portal, which issues API keys and shows the MCP and CLI configuration.
- ai-lab
tools/flieber_agent_tunnel: the existingask_flieberMCP server. It is the reference for the streamable-HTTP MCP skeleton and the Clerk OAuth pieces.
Metadata
Release files for flieber 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| flieber-0.1.1.tar.gz | 38.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flieber-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 93.3 kB
Release files / flieber-0.1.1.tar.gz
| Download URL | flieber-0.1.1.tar.gz |
|---|---|
| Size | 38.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ac771eccaf10af0b40d5b8aa80791365ce5db84a0074807a8310ddca78e670e5
|
|
BLAKE2b-256 checksum How to use checksums |
2aa47dce133588610337a9d99cb529c32abb30abee281d425ac85d89ce0b2038
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / flieber-0.1.1-py3-none-any.whl
| Download URL | flieber-0.1.1-py3-none-any.whl |
|---|---|
| Size | 54.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9a42c72eb8cfc34a92c4c659d99630928a6abb77a07932b2eef5df66f605d278
|
|
BLAKE2b-256 checksum How to use checksums |
f9a23d1a846ff101b4c2525aab9b8a8d6a620d81c42edfe9a9d337bf7f070dc2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Security for flieber 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.