harahara
Core ConceptsMemory & Sessions

Memory & Sessions

How hara remembers across runs — durable memory, resumable sessions, file checkpoints, and rewind.

Durable memory

hara keeps a memory that is always loaded and cwd-independent — global facts in ~/.hara/memory/ plus per-project facts in .hara/memory/. It's the same brain whether you drive hara from the terminal or a chat app.

hara memory show       # the digest injected at session start
hara memory init       # scaffold the memory dirs + seed files
hara memory distill    # promote recent daily logs → durable MEMORY

As you work, hara records decisions to short-term daily logs; distill consolidates them into durable MEMORY.md. How eagerly it saves is the evolve setting (proactive · light · off). A top-level USER.md holds global preferences that apply everywhere.

Sessions

Every conversation is saved and resumable.

hara sessions          # list saved sessions
hara -c                # resume the most recent session here
hara --resume <id>     # resume a specific one
hara export <id> --out session.md   # render a session to Markdown

The gateway uses the same machinery: each (chat, directory) pair gets its own resumable thread.

Checkpoints & rewind

hara snapshots your files before each turn into a shadow git store outside your repo (~/.hara/checkpoints/), so you can always step back — your real git history stays clean.

In the REPLDoes
/undorevert the last file change(s) this session
/checkpoint · /checkpoint restore <n>list / restore a file-state snapshot
/rewind <n>fork the conversation back to an earlier turn (files untouched)

Disable snapshots with fileCheckpoints false if you prefer.

Auto-compaction

Long sessions don't fall over: when the context window approaches full, hara summarizes the conversation so far and keeps going (the same thing /compact does on demand). Turn it off with autoCompact false or HARA_AUTO_COMPACT=0.

The summary is an eight-section structured brief — goal, key technical concepts, decisions, files & code, errors & fixes, current state, all your messages verbatim and in order (so however hard the history is squeezed, your intent never drifts), and the next step with a direct quote of your latest request.

Attention refresh

During long tasks the agent keeps its own focus: if its checklist has unfinished items and goes five tool-rounds untouched, a silent system-reminder re-shows the authoritative list and asks for a status pass — so multi-step work doesn't quietly abandon its plan. Reminders are visible to the model only (never rendered in your transcript) and always carry an "ignore unless relevant" note.

Was this helpful?
harahara
A product by Nanhara · Apache-2.0 · v0.139.0

© 2026 Nanhara Technologies