The temp file + os.replace() (rename) pattern fails on FUSE-mounted paths
(e.g. $OLLIE/sk/, $OLLIE/pl/) because the 9P server doesn't implement Twstat.
Write directly to file_path instead.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Has its own approval system; safe to trust by default wherever
SUPERPOWERD_SESSION_TOKEN is present.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Tools, sandbox configs, docs, and skills all updated. $OLLIE is now
the canonical ollie root — cd $OLLIE goes directly to the FUSE mount.
Core now always injects $OLLIE into the execute env at session start.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
memory_remember: saves a denote-formatted flat file to $OLLIE_9MOUNT/m
memory_recall: searches memories by keyword/tag/title via grep
Both write/read through the 9P FUSE mount. Removed os.makedirs calls
that failed with ERANGE on the 9P-backed /m directory.
sandbox/restricted.yaml: add {HOME}/.pyenv, .rbenv, .nvm to rox so
python3 and other version-managed interpreters can execute.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 9p: memory defaults to ~/.config/ollie/memory, created on startup
- core sandbox: ~/.config/ollie and ~/mnt/ollie are RWX
- tools: memory_remember/recall use $OLLIE_9MOUNT/m
- doc: update ARCHITECTURE.md memory path reference
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- sandbox: ~/mnt/ollie added as RWX, OLLIE_9MOUNT passed through
- 9p server: create memory dir on startup
- tools: memory_remember/recall use $OLLIE_9MOUNT/m
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Previous wording was passive. Now gives an explicit command with a
concrete tool call to run before the first response.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Direct the model to read ollie/sk/reasoning.md and ollie/sk/memory.md
at session start. Both are behavioral primitives that must be active
before any task begins.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
tools.sh reads # description/# Args headers from all scripts and prints
a summary — one call replaces the schema injection built-in tools get
for free. Prompt now directs the model to run it before using unfamiliar
tools.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces the removed built-in task server. Plans are written to
$OLLIE_9MOUNT/pl/ (persistent, shared across sessions). Scripts live
in the tools directory and are invoked via execute_tool.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- default.yaml: add OLLIE_MEMORY_PATH and OLLIE_PLAN_PATH to env and rw lists
- restricted.yaml: replace {HOME}/mnt/beads and {HOME}/mnt/denote with
{OLLIE_MEMORY_PATH} and {OLLIE_PLAN_PATH} rwx entries; add vars to env list
- update core and 9p submodule refs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Drop the task (9beads-mcp) and memory (denote-mcp) MCP servers from all
agents. Update trustedTools to task_plan, task_complete, memory_remember,
memory_recall. Remove stale prompt text referencing task_create/reasoning_plan.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>