-
Notifications
You must be signed in to change notification settings - Fork 0
Growth System
Growth is how personas learn locally. Each installed persona accumulates a structured log of observations -- things learned, mistakes caught, patterns discovered -- that persists across sessions.
- On session start, the agent reads the growth log.
- During the session, the agent appends observations as they emerge.
- On the next session, the new observations are available as context.
Growth is local-only. It never leaves your machine. It never flows upstream to the marketplace. It stays in your project context.
Growth entries are stored as JSONL (one JSON object per line) in the project's central store:
$XDG_DATA_HOME/frameshift/projects/<project-id>/personas/<name>/growth.jsonl
Each entry carries:
- Timestamp
- Session attribution
- Task context
- Intent classification
- The observation text
Growth entries have two scopes:
- Project-scope -- stays with one project. "This codebase uses thiserror 2.x, not 1.x."
- Global-scope -- applies everywhere. "Always check the migration order before running diesel."
The engine summarizes recent growth by deduplicating near-identical entries and picking the most recent per intent category.
# Append a growth entry:
frameshift grow append rust "orphan rules prevent implementing foreign traits on foreign types"Older personas used a freeform growth.md file. The engine migrates these to JSONL:
frameshift migrateGrowth and memory serve different purposes:
| Growth | Memory | |
|---|---|---|
| Scope | Per-persona, per-project | Cross-persona, cross-project |
| Storage | Local JSONL | Pluggable backend (HTTP, SQLite) |
| Visibility | Only the persona that wrote it | Any persona that searches for it |
| Persistence | Always local | Depends on backend |
| Purpose | Session-to-session learning | Long-term knowledge retrieval |
Growth is the persona's private notebook. Memory is the shared knowledge base.
Frameshift -- Same model. Different frame.
Getting started
Using Frameshift
Personas
Systems