Both x/elevate and elevate-adapter-superpowerd now default the socket
path to $XDG_RUNTIME_DIR/ollie/elevate.sock (falling back to
/run/user/<uid>/ollie/elevate.sock) when OLLIE_ELEVATE_SOCKET is unset.
Add OLLIE_ELEVATE_SOCKET to env sections of both sandbox configs.
Add {XDG_RUNTIME_DIR}/ollie to restricted sandbox filesystem rw rules
so x/elevate can reach the socket. Update README env block and
scripts/README socket path docs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
x/elevate is now a generic client: reads OLLIE_ELEVATE_SOCKET, sends
{cmd,cwd}, reads back {stdout,stderr,exit_code}. All backend-specific
logic moves to adapters. Add elevate-adapter-superpowerd as the
reference adapter: owns the socket lifecycle, translates the ollie
protocol to superpowerd JSON-RPC ExecuteCommand. Add OLLIE_ELEVATE_SOCKET
to env docs. Update scripts/README.md with protocol spec, adapter
setup, and guide for writing custom adapters.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The purpose is to run steps outside the Landlock sandbox, not to gain
privileges. Clarify the constraint (kernel-enforced, must reach an
external process), reframe the minimal example and superpowerd walkthrough
accordingly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sudo/doas don't work: Landlock is kernel-level and applies regardless
of user privileges within the sandboxed process. The backend must hand
the command to a process spawned outside landrun entirely. The
superpowerd Unix socket pattern is the right model.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
x/elevate handles token acquisition itself via the re-exec through
superpowers run-session when SUPERPOWERD_SESSION_TOKEN is absent.
No manual injection is needed; the paragraph was wrong.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Document the plugin interface contract (args, cwd, stdout/exit code),
plugin path resolution (OLLIE_PLUGINS_PATH / ~/.config/ollie/scripts/x/),
a minimal exec-only example, a step-by-step walkthrough of the default
superpowerd implementation including session token injection, and custom
backend examples (sudo, doas, disable).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add x/ to the namespace list and add an x/elevate section describing
its role as the elevation plugin for execute_code elevated steps, the
calling convention, the default superpowerd implementation, and how to
replace or disable it.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sandboxing is not layered. It is applied specifically to execute_code:
each step is wrapped with landrun using a named config from
~/.config/ollie/sandbox/<name>.yaml (default: "default"). Steps marked
elevated:true bypass the sandbox via x/elevate. Remove superpowerd
reference.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Auto-compact does exist: triggers automatically at 75% of the model's
context length (128k default), and also manually via /compact.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove references to the non-existent contextBuilder and rolling window.
Describe the actual compaction model: unbounded history, explicit /compact
trigger, LLM-generated summary, system message preservation, user message
budget (~20k tokens), tool call flattening, and pre-compaction snapshot.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add HTTP gateway and web UI sections to USAGE.md: build instructions,
runtime flags, HTTP→9P endpoint reference, nginx serving example, and
Vite dev workflow. Add HTTP gateway architecture section to
ARCHITECTURE.md with frontend comparison table. Update README.md with
httpgw build target, dual remote-access paths (9P mount vs httpgw),
and container example updated for both.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Promote IDEAS.md content to concrete how-to documentation: subagent
delegation via subagent_spawn, concurrent sessions with direct prompt
passing (prompt/statewait/offset), predefined shell-script workflows,
self-generating workflows, and store federation via OLLIE_TOOLS_PATH
and OLLIE_TRANSCRIPT_PATH pointing at 9pfuse-mounted remote dirs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Batch and session namespaces are now a single s/ concept. s/bfg blocks
until the agent finishes and writes to stdout; s/bbg returns immediately
and prints the session path. s/b is the core one-shot runner. Remove all
b/ references from README, USAGE, ARCHITECTURE, and scripts/README.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- subagent_spawn: use s/bfg instead of deprecated b/q
- SYSTEM_PROMPT: fix stale /b/ reference to /s/
- core: sort session index by ID
- webui: gitignore .kiro/
FUSE entry cache may not reflect the new session directory immediately
after the write to s/new returns. Poll until it appears, mirroring the
approach in s/sh.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bash's printf builtin issues one write() syscall per call; the server
processes each write independently, so the first write (name= only)
would fail the cwd-required check. Build the full KV string first,
then write once.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Batch jobs were a front-end concern. All one-shot query workflows now
compose session primitives via s/b (engine), s/bfg (foreground), and
s/bbg (background). Parallel execution is a shell loop.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
tui/session: IsIdle reads spec and parses state= key.
scripts/s/sh, sh.rc: add spec_get helper; is_idle, /cwd, /model,
/agent, /backend read via spec_get; writes go to spec as key=value.
el/ellie.el: ellie--state reads spec with string-match on state=.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Option C implementation: single namespace with composable file tables.
Batch jobs are sessions with a reduced file set — the directory
contents declare the capability.
- core: SessionStore absorbs BatchStore; s/new detects batch format
- 9p: /b/ removed entirely; all routing through /s/
- scripts/b/* moved to scripts/s/*; paths updated
- subagent_spawn, optimize: /b/q -> /s/q
- scripts/b/ removed
Update core and tui submodules. Core ensures assistant content in the
chat log ends with a newline so 9P line-buffered reads don't lag one
turn behind. TUI adds regression tests for the tailing behavior.