@tpsdev-ai/flair 0.8.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,9 +4,9 @@
4
4
  [![Docker Test](https://github.com/tpsdev-ai/flair/actions/workflows/docker-test.yml/badge.svg)](https://github.com/tpsdev-ai/flair/actions/workflows/docker-test.yml)
5
5
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
6
6
 
7
- > **The memory system that gives agents a durable identity, not just durable facts. Federated. Crypto-isolated. Yours.**
7
+ > **The identity and memory substrate for AI agents. Crypto-pinned. Federated. Self-hosted.**
8
8
 
9
- Most agent memory systems store *facts*. Flair stores facts AND the agent's identity its character, its values, its accumulated way of working. Same agent, different orchestrator: memory follows. Same network, different machine: memory federates. Same instance, different agents: memory is crypto-isolated end-to-end.
9
+ Flair is the **identity + memory substrate for AI agents**. Cryptographic per-agent identity (Ed25519). Soul as a first-class primitive, separate from memory. Federation across hosts (hub/spoke). Same agent, every orchestrator memory follows.
10
10
 
11
11
  ```
12
12
  ┌──────────────────────────────────────────────────────────────────┐
@@ -38,20 +38,22 @@ Most agent memory systems store *facts*. Flair stores facts AND the agent's iden
38
38
 
39
39
  `flair memory add` writes a memory; `flair search` finds it by meaning, not keywords. The same memory is then visible to every harness in the catalog above.
40
40
 
41
+ ### Same identity, every orchestrator
42
+
43
+ ![Flair cross-orchestrator: one agent, one memory store, three MCP-capable CLIs](docs/assets/flair-cross-orchestrator.gif)
44
+
45
+ Same Ed25519 identity, same memory store, three different MCP-capable CLIs (Claude Code, Codex CLI, Gemini CLI). A memory written from one is immediately retrievable from the next. Your agent's identity and history aren't bound to a single orchestrator's runtime.
46
+
41
47
  ## How Flair compares
42
48
 
43
49
  | | Flair | Mem0 | Honcho | Letta (MemGPT) | Built-ins (OAI/Anthropic/Google) |
44
50
  |---|---|---|---|---|---|
45
- | **License** | Apache 2.0 | Apache 2.0 | AGPL-3.0 | Apache 2.0 | proprietary |
46
- | **Self-host** | yes | yes (Docker) | yes (Docker) | yes | no |
47
- | **Managed cloud also offered** | no | yes (app.mem0.ai) | yes (app.honcho.dev) | no | only mode |
48
51
  | **Identity model** | **Ed25519 per agent (crypto-pinned)** | tenant-isolation | per-user soft tenant | runtime-bound | account-scoped |
49
52
  | **Federation (peer-to-peer)** | **yes — hub/spoke validated** | no | no | no | no |
50
53
  | **Cross-orchestrator** | **11+ harnesses, same memory** | several | several | runtime-bound | vendor-locked |
51
- | **Semantic search** | in-process (nomic-embed, no API calls) | yes | yes | yes | varies |
52
54
  | **Soul / persistent character** | **first-class** | optional | persona-shaped | optional | no |
53
55
 
54
- Mem0, Honcho, and Letta are all open-source and self-hostable credit where it's due. That's why we don't lead with "open source" as the differentiator. The cells in **bold** are the ones that, in our reading, no other system can claim cleanly today: crypto-pinned per-agent identity, peer-to-peer federation, the breadth of cross-orchestrator integrations, and soul as a first-class primitive.
56
+ Four rows where Flair holds a cell no other system holds cleanly today. Parity rows (license, self-host, semantic search) are table-stakes for this neighborhood Mem0, Honcho, and Letta are all open-source and self-hostable so they're omitted to keep the moat visible.
55
57
 
56
58
  The honest gaps:
57
59
 
@@ -61,6 +63,29 @@ The honest gaps:
61
63
 
62
64
  If you need any of those specifically, use them. If you need crypto-pinned identity + federation + cross-orchestrator breadth + soul-as-a-feature — that's the gap Flair fills.
63
65
 
66
+ ### Memory curation: vs Claude Dreams
67
+
68
+ Anthropic shipped [Claude Dreams](https://platform.claude.com/docs/en/managed-agents/dreams) (research preview, April 2026) — async pipeline that reads a memory store + session transcripts and produces a curated output store: duplicates merged, stale entries replaced, insights surfaced. Validates the category: agent memory accumulates drift and needs cleanup.
69
+
70
+ Flair ships both the on-demand curation surface (`flair rem rapid`) AND the scheduled nightly cycle in v0.9.0, per the [FLAIR-NIGHTLY-REM spec](specs/FLAIR-NIGHTLY-REM.md).
71
+
72
+ - **`flair rem rapid`** — on-demand reflection. `--focus {lessons_learned, patterns, decisions, errors}` mirrors Dreams' `instructions` parameter. Outputs *candidates*, not a wholesale store swap.
73
+ - **`flair rem candidates` / `flair rem promote <id> --rationale "<why>"` / `flair rem reject <id>`** — review and promote distilled candidates with required rationale.
74
+ - **`flair rem nightly enable [--at HH:MM]`** — scheduled automation via platform-native scheduler (launchd / systemd). Pre-cycle snapshot to `~/.flair/snapshots/<agent>/<iso>.tar.gz`. Maintenance step (soft-delete expired + soft-archive stale). Audit log to `~/.flair/logs/rem-nightly.jsonl`. `flair rem pause` / `resume` for emergency stop.
75
+ - **`flair rem restore <date> --apply`** — rewinds Harper state to a snapshot. Takes a pre-restore snapshot of current state first, so the rewind itself is reversible.
76
+ - *Slice-3 (1.1)* — automated server-side distillation (requires pluggable LLM provider), trust-tier filter on REM input, cross-agent restore. Until then, distillation is operator-triggered via `flair rem rapid` followed by manual promote/reject.
77
+
78
+ The substantive difference is the **promotion contract**:
79
+
80
+ | | Claude Dreams | Flair REM (today) |
81
+ |---|---|---|
82
+ | **Output** | New memory store — accept or discard | Staged candidates — per-candidate decision |
83
+ | **Promotion gate** | None — accept the whole store | `flair rem promote <id> --rationale "<why>"` |
84
+ | **Reversibility** | Input store is never modified (real safety property) | Pre-cycle snapshot + `rem restore <date> --apply` (rewinds Harper state, takes a pre-restore snapshot too) |
85
+ | **Where it runs** | Anthropic Managed Agents (SaaS, Anthropic models only) | Self-hosted, any model |
86
+
87
+ Dreams is easier to start with — one API call, and the input-never-modified contract gives you a clean rollback by simply not accepting the output. REM is the more granular surface — per-candidate decisions with required rationale — for operators who want to merge what's right and reject what's wrong on the same nightly cycle. Both are legitimate choices; the right one depends on whether you want store-level or candidate-level review.
88
+
64
89
  ## Why this exists
65
90
 
66
91
  Every agent framework gives you chat history. None of them give you *identity*.
@@ -333,7 +358,7 @@ flair/
333
358
  - **Harper-native** — No Express, no middleware frameworks. Harper IS the runtime.
334
359
  - **In-process embeddings** — Native [nomic-embed-text](https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF) (768 dimensions) via [llama.cpp](https://github.com/ggerganov/llama.cpp). Runs on CPU or GPU (Metal, CUDA). No API calls, no OpenAI key needed.
335
360
  - **Schema-driven** — GraphQL schemas with `@table @export` auto-generate REST CRUD. Custom resources extend behavior (durability guards, auto-embedding, search).
336
- - **Zero admin tokens on disk** Admin credentials come from the `HDB_ADMIN_PASSWORD` environment variable only. Never stored on the filesystem.
361
+ - **Admin credentials** — `flair init` auto-generates an admin password stored at `~/.flair/admin-pass` (mode 0600). Can also be set via `HDB_ADMIN_PASSWORD`. See [SECURITY.md](SECURITY.md) for the full model.
337
362
 
338
363
  ## Deployment
339
364
 
@@ -365,9 +390,9 @@ FLAIR_URL=https://your-server:19926 flair agent add mybot
365
390
 
366
391
  Good for teams with multiple machines or always-on agents.
367
392
 
368
- ### Harper Fabric (coming soon)
393
+ ### Harper Fabric
369
394
 
370
- Managed multi-region deployment via [Harper Fabric](https://www.harperdb.io/). Data replication, automatic failover, web dashboard. Enterprise scale without ops overhead.
395
+ Deploy Flair on [Harper Fabric](https://www.harperdb.io/) for managed hosting with multi-region replication and failover. Federation is live against Harper Fabric hubs (e.g. `flair.heskew.harperfabric.com`) pair your local instance to sync memories across nodes.
371
396
 
372
397
  ## Security
373
398
 
@@ -376,7 +401,7 @@ See [SECURITY.md](SECURITY.md) for the full security model, threat analysis, and
376
401
  **Key points:**
377
402
  - Ed25519 cryptographic identity — agents sign every request
378
403
  - Collection-level data isolation — agents can't read each other's memories
379
- - Admin credentials never stored on disk environment variables only
404
+ - Admin password auto-generated on init, stored at `~/.flair/admin-pass` (mode 0600)
380
405
  - Key rotation via `flair agent rotate-key`
381
406
  - Cross-agent access requires explicit grants
382
407