48897af9b3 feat(memory): global activity digest tree (#709) (#798)
Phase 3b of the memory architecture (umbrella #711). Adds a singleton
cross-source `global` tree whose purpose is time-windowed recap
("what did I do in the last 7 days?") via a time-axis-aligned hierarchy:
L0 = day, L1 = week (7 dailies), L2 = month (4 weeklies),
L3 = year (12 monthlies).

## What's in this PR

- `global_tree/registry.rs` — singleton `get_or_create_global_tree`
  with the same UNIQUE-race recovery pattern Phase 3a uses for source
  trees (scope is the literal `"global"`).
- `global_tree/digest.rs` — `end_of_day_digest(config, day, summariser)`
  walks every active source tree, picks one representative contribution
  per tree (latest L1+ intersecting the day, fallback to root), folds
  them with the Summariser trait into one L0 daily node, inserts it
  into `mem_tree_summaries`, and triggers the L0→L1→L2→L3 cascade.
  Idempotent on re-run (returns `DigestOutcome::Skipped` when an L0
  already exists for the day).
- `global_tree/seal.rs` — count-based cascade-seal with thresholds 7
  (weekly), 4 (monthly), 12 (yearly). Transactional append with
  idempotency on (tree_id, level, item_id) to survive partial retries.
- `global_tree/recap.rs` — `recap(config, window)` maps the window to
  a level (<2d→L0, <14d→L1, <60d→L2, else L3), fetches covering
  summaries, and falls back downward when the chosen level has no
  sealed material yet (reports `level_used` so callers can surface
  "best available"). Empty tree returns `None`.
- `source_tree/store.rs` — adds `list_trees_by_kind` used by the
  digest to enumerate source trees.
- `tree/mod.rs` — exports the new `global_tree` module.

## Reuses from Phase 3a

- `source_tree::store` CRUD for `mem_tree_trees` / `mem_tree_summaries`
  / `mem_tree_buffers` (no new schema tables).
- `source_tree::summariser::{Summariser, SummaryContext, SummaryInput,
  InertSummariser}` — honest-stub entity/topic semantics kept as-is.
- `source_tree::registry::new_summary_id` for id generation.
- `source_tree::types::{Tree, SummaryNode, Buffer, TreeKind::Global,
  TreeStatus}` — `TreeKind::Global` was already declared in Phase 3a.
- Entity backfill via `tree::score::store::index_summary_entity_ids_tx`
  so Phase 4 retrieval can resolve "summaries mentioning X" through the
  same inverted index as leaves.

## Design decision: seal.rs kept as parallel impl

`source_tree::bucket_seal::cascade_all_from` uses a token-budget seal
policy (`TOKEN_BUDGET`), not pluggable. The global tree needs
count-based thresholds per level. Rather than refactoring the stable
Phase 3a seal pipeline to accept a policy (regression risk), we keep
`global_tree/seal.rs` as a parallel count-based implementation that
routes through the same `source_tree::store` primitives. The shape of
the transaction is intentionally identical so future consolidation is
straightforward when we're ready to touch the Phase 3a seal path.

## Tests

15 new tests; 176 total `memory::tree::*` passing (was 161).

Coverage:
- registry idempotency, ID prefix, UNIQUE-race recovery
- digest empty-day, populated-day, rerun idempotency, 7-day weekly cascade
- seal below-threshold, weekly-threshold, append idempotency
- recap level selection across all four bands, empty-tree, L0 fallback,
  L1 when sealed

## Stacked on #789

Base is `feat/709-summary-trees` (Phase 3a). Merge #789 first, then
rebase this branch. PR body should flag the stack order.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 13:39:58 -07:00
2026-04-21 14:14:15 +00:00
2026-04-22 04:42:12 +00:00
2026-02-20 13:03:15 +04:00
2026-02-20 13:03:15 +04:00

OpenHuman

The age of super intelligence is here. OpenHuman is your Personal AI super intelligence. Private, Simple and extremely powerful.

DiscordRedditX/TwitterDocs

Early Beta Platforms: desktop only Latest Release

The Tet

"The Tet. What a brilliant machine" — Morgan Freeman as he reminisces about alien superintelligence in the movie Oblivion

Early Beta — Under active development. Expect rough edges.

To install or get started, either download from the website over at tinyhumans.ai/openhuman or run

# For MacOS/Linux
curl -fsSL https://raw.githubusercontent.com/tinyhumansai/openhuman/main/scripts/install.sh | bash

# For Windows
irm https://raw.githubusercontent.com/tinyhumansai/openhuman/main/scripts/install.ps1 | iex

What is OpenHuman?

OpenHuman is an open-source agentic assistant that is designed to integrate with you in your daily life. Here's what makes OpenHuman special:

  • Simple, UI-first — A clean desktop experience and short onboarding paths so you can go from install to a working agent in a few clicks, without a config-first setup. You don't need a terminal to run OpenHuman.

  • One subscription, many providers — You only need one account to get access to many agentic APIs (AI Models, Search, Webhooks/Tunnels and other 3rd party APIs etc..), simplifying the experience to get a powerful agent going.

  • Rich Skills — Plug into Gmail, Slack, Notion, and the rest of your stack via rich, feature-backed skills. Connections are typically one click through setup wizards instead of wiring APIs by hand. Workflow data is kept on device, encrypted locally, and treated as yours: encryption and sensitive context stay on your machine. Webhooks give instant feedback into the agent when external systems or skills emit events, so the loop stays tight without constant polling.

  • Local knowledge base — Built from your data and your activity. How you work across tools, sessions, and connected services—so the agent gets rich, workflow-aware context, not a one-off chat transcript. Everything is stored on your machine and compounding over time without becoming a cloud dossier. Channels, skills and ongoing conversations feed the same loop so day-to-day context does not reset every session.

  • Local AI model — The Rust core exposes local AI paths (and the desktop bundle can ship local/bundled runners where applicable) for the workloads above—vision snippets, speech helpers, summarization, tooling—so sensitive steps can stay off the cloud when you choose.

  • Deep desktop integrations — OpenHuman is a native desktop assistant, not a web-only chat: memory-aware keyboard autocomplete, voice (STT listening and TTS replies), screen intelligence that understands what is on screen and feeds your local context, plus windowing and OS-level permissions—so the agent meets you on the machine, not trapped in a browser tab.

Architecture: docs/ARCHITECTURE.md. Contributor orientation: CONTRIBUTING.md. Running from source: docs/install.md.

Highlights

  • Neocortex — local-first knowledge base that learns from your data and activity, compounding context across tools and sessions.
  • The Subconscious — background self-learning loops that turn everyday usage into workflow-aware intelligence.
  • Screen Intelligence — the agent sees what's on your screen and feeds it into your local context.
  • Inline Autocomplete — memory-aware keyboard autocomplete anywhere on your desktop.
  • Voice (STT + TTS) — speak to OpenHuman and hear it reply, natively on the desktop.
  • Skills & Integrations — one-click skills for Gmail, Slack, Notion and the rest of your stack, with local encryption and webhooks for instant feedback.
  • Messaging Channels — inbound/outbound across the channels you already use, routed through your agent.
  • Teams & Organizations — shared workspaces for collaborating with an agent across a team.
  • Rewards & Achievements — gamified progression as your agent grows with you.
  • Privacy & Security — workflow data stays on device, encrypted locally, and treated as yours.

OpenHuman vs other agents

High-level comparison (products evolve—verify against each vendor). OpenHuman is built to minimize vendor sprawl, keep workflow knowledge on-device, and ship deep desktop features—not only chat.

Claude Code/Cowork OpenClaw Hermes Agent OpenHuman
Open-source 🚫 Proprietary MIT MIT GNU
Simple to start Desktop + CLI ⚠️ Terminal-first ⚠️ Terminal-first Clean UI, minutes
Cost ⚠️ Sub + add-ons ⚠️ BYO models ⚠️ BYO models Local-friendly
Memory & KB Chat-scoped ⚠️ Plugin-reliant Self-learning 🚀 Local KB + learning
API sprawl 🚫 Extra keys 🚫 BYOK 🚫 Multi-vendor One account
Extensibility MCP SKILL.md SKILL.md 🚀 Rich Skills
Desktop integration ⚠️ Basic ⚠️ Light ⚠️ Light STT/TTS/screen/more

Contributors Hall of Fame

Show some love and end up in the hall of fame

OpenHuman contributors
S
Description
No description provided
Readme GPL-3.0
214 MiB
Languages
Rust 59.1%
TypeScript 37.9%
JavaScript 1.6%
Shell 1.2%
CSS 0.1%