Levi Neely
4cf346934d
Fix docs: tools path is anvillm/tools, not anvillm/tools/anvilmcp
2026-03-18 23:40:16 +01:00
Levi Neely
c5b96bcac1
Update docs: execute_code is the only MCP tool
...
- Rewrite code execution docs to reflect single-tool model
- Remove obsolete migration guide and testing doc
- Update README, kiro-cli README, BEADS.md MCP sections
- Remove all 'direct tool calls' / 'legacy tools' framing
- Update sandbox-config diagram: roles→sandbox, override→merge
- Add 9P security mitigation: run locally on trusted network
- Regenerate sandbox-config.svg
2026-03-18 23:39:23 +01:00
Levi Neely
c5e95eb1ea
Remove cmd/anvilweb, cmd/anvilwebgw, cmd/anvillm, and elisp/
...
Drop legacy frontend proof-of-concepts (TUI, web UI, HTTP gateway,
Emacs major mode) to focus on the core. Assist remains as the primary
frontend; any 9P-speaking program can serve as a frontend.
Update README, mkfile, .gitignore, and architecture/client-interactions
diagrams accordingly.
2026-03-18 23:20:54 +01:00
Levi Neely
d3e2a543cb
Update remaining read_inbox references to check_inbox
2026-03-18 08:20:41 +01:00
Levi Neely
2a1d620a31
rename 9P endpoint from 'agent' to 'anvillm'
...
- Update socket path, MountService calls, path prefixes
- Update mcptools, scripts, docs, diagrams, services
- Fix idleSince initialization at session creation
2026-03-12 12:13:40 +01:00
Levi Neely
6475b9f216
Add maildir messaging support for agent communication
2026-03-05 14:33:47 +01:00
Levi Neely
2111f19e9f
Add zap logging to ~/.config/anvillm/logs with panic recovery
...
- Created internal/logging package with zap logger
- Added panic recovery to anvilsrv main loop, monitor goroutine, and mail processing
- Replaced log.Printf/Fatal with zap in debug, p9, tmux packages
- Fixed beads race condition: clear assignee before closing issue
- All errors and crashes now logged to ~/.config/anvillm/logs
2026-02-27 11:46:49 +01:00
Levi Neely
5f8c41b576
Implement MCP code execution pattern ( #20 )
...
* Implement MCP code execution pattern
- Add execute_code tool for bash execution in landrun sandbox
- Remove redundant MCP tools (read_inbox, send_message, etc.)
- Implement dynamic tool discovery from ~/.config/anvillm/mcptools/
- Add workspace isolation (~/.cache/anvillm/exec)
- Add security: output limits, concurrency limits, validation, path traversal protection
- Update bot templates (Conductor, Taskmaster) with bash examples
- Update anvillm-communication skill to use execute_code pattern
- Create comprehensive documentation (user guide, migration guide, security guide)
- Add test suite for validation and limitedWriter
- Fix landrun flags: --rox for executables, --env for AGENT_ID passthrough
- Network blocked by default (no --connect-tcp or --unrestricted-network)
Token reduction: 80-99% via progressive tool discovery and subprocess data processing
* Fix code review issues in MCP code execution pattern
- Security: Change security.jsonl permissions from 0644 to 0600
- Bug: Fix limitedWriter to return correct byte count for io.Copy
- Bug: Fix tool schema inconsistency (execute_code requires only 'code')
- Performance: Move whitespace regex to package-level var
- Security: Improve validateCode with regex patterns and normalization
- Cleanup: Remove dead code from main.go and tools.go
- Cleanup: Rewrite shell scripts to use jq for safe JSON construction
- Docs: Fix duplicate sections and JavaScript syntax in bash examples
* Improve code validation security patterns
- Fix rm -rf bypass: allow optional whitespace before /
- Expand rm -rf to block sensitive paths (/home, /var, /usr, etc.)
- Block all network protocols in curl/wget (not just http/https)
- Add test for regex pattern compilation
- Add test cases for tabs, sensitive paths, ftp/file protocols
* Harden shell scripts and improve rate limiting
---------
Co-authored-by: Levi Neely <lkn@darkstar.example.net>
Co-authored-by: Levi Neely <lneely@pascom.net>
2026-02-26 14:02:54 +01:00
Levi Neely
8fccaa8977
Make autonomous workflow diagram full-width
2026-02-22 12:25:21 +01:00
Levi Neely
36e5de7e3c
Replace autonomous workflow with sequence diagram
...
- Shows full workflow: User → Taskmaster → Beads → Conductor → Bots
- Illustrates dependency management and completion notification
- Increased width to 600px for better readability
- Updated cache-busting to v=3
2026-02-22 12:24:01 +01:00
Levi Neely
c5c07a3840
Increase automation workflow diagram to 300px
2026-02-22 12:20:28 +01:00
Levi Neely
af83bc26df
Rename to Autonomous Workflows and reduce diagram to 250px
2026-02-22 12:19:46 +01:00
Levi Neely
b99954c214
Center all images and reduce sandbox config to 250px
...
- All diagrams now centered with <p align="center">
- Sandbox config reduced from 400px to 250px
2026-02-22 12:18:29 +01:00
Levi Neely
52be2d56c4
Remove leftover ASCII diagram after crash recovery SVG
2026-02-22 12:16:56 +01:00
Levi Neely
b0bfc2d777
Scale down smaller diagrams
...
- sandbox-config: 400px
- session-lifecycle: 500px
- crash-recovery: 500px
- client-interactions: 400px
- events: 400px
- Keeps larger diagrams (architecture, mailbox, automation) at full width
2026-02-22 12:15:38 +01:00
Levi Neely
cf83b07b04
Add cache-busting to SVG URLs and use default theme
...
- Add ?v=2 query parameter to all SVG URLs to bypass GitHub cache
- Regenerate with default theme as requested
2026-02-22 12:13:54 +01:00
Levi Neely
41acc805d1
Replace ASCII diagrams with SVG images
...
- Create Mermaid source files for all diagrams
- Generate SVGs using mermaid-cli
- Replace all ASCII art with embedded SVG images
- Diagrams: architecture, sandbox-config, session-lifecycle, crash-recovery, client-interactions, mailbox-flow, automation-workflow, events
- Fixes alignment issues with ASCII box drawing characters
2026-02-22 12:08:12 +01:00
Levi Neely
d3267d8771
Add visual diagrams throughout documentation
...
- Architecture: clients → core services → backends (with ollie → Ollama)
- Sandbox config: layered YAML override hierarchy
- Mailbox flow: user ↔ agent A ↔ agent B cross-backend messaging
- Automation workflow: Taskmaster → beads → Conductor → parallel agents
- 9P filesystem: client interaction patterns
- Session lifecycle: idle ↔ running cycle via CLI hooks
- Crash recovery: state preservation and auto-resume
- Events: multiple consumers reading event stream
- Add 9fans.net/go reference
- Add github.com/simonfxr/pubsub reference for event bus
2026-02-22 11:56:20 +01:00
Levi Neely
ee6f50f50c
Tech edit README: improve clarity, concision, and flow
...
- Streamline opening sections (tagline, architecture, 9P rationale)
- Add anvilwebgw to core components
- Replace Workflows section with Bot Templates
- Remove obsolete bot templates (keep only Taskmaster and Conductor)
- Consolidate sandboxing documentation
- Improve formatting and readability throughout
- Correct MCP description (discover agents vs control sessions)
2026-02-22 11:28:37 +01:00
Levi Neely
f8083a84c0
Add automation documentation
...
- Add Automating Development section to README
- Create EVENTS.md documenting event stream system
- Document Taskmaster and Conductor workflow
2026-02-22 10:57:37 +01:00
Levi Neely
8ecbbbd678
Add bot templates and orchestration system
...
- Add bot-templates/ directory with specialized agent templates
- Update README.md with orchestration documentation
- Update mkfile with new build targets
- Remove old workflow files (DevReview, DevReviewQA, Docs, Planning, Research, Taskmaster)
2026-02-22 10:45:03 +01:00
Levi Neely
9d0e9b7e42
Add ollama backend support
...
- Add ollama backend implementation using mcphost and ollie
- Add ollama.yaml sandbox configuration
- Update README with ollama installation and usage instructions
- Add ollama command to Assist, anvilmcp, and anvilsrv
- Add ANVILLM_OLLAMA_MODEL environment variable
- Hardcode ollama-mcp.json config path to ~/.config/anvillm/ollama-mcp.json
2026-02-21 21:03:55 +01:00
Levi Neely
9f544be1dc
update README
2026-02-21 07:45:25 +01:00
Levi Neely
e0e5a1ac04
Document generic environment variable expansion in templates
...
Any environment variable can be used as {VARNAME} in sandbox configs
Listed common ones (CWD, HOME, TMPDIR, XDG_*) are examples with defaults
Added note explaining the general pattern
2026-02-20 00:29:48 +01:00
Levi Neely
d8907e1029
Fix KIRO_API_KEY documentation
...
Optional if using 'kiro-cli login' (OAuth flow)
Same pattern as ANTHROPIC_API_KEY
2026-02-20 00:28:05 +01:00
Levi Neely
1c883b6a18
Fix ANTHROPIC_API_KEY documentation
...
Not required if using 'claude /login' (OAuth flow)
Only needed for non-interactive API key authentication
2026-02-20 00:27:41 +01:00
Levi Neely
ebeac0da6a
Add 'Why 9P?' section
...
Explains design rationale: orchestration as file manipulation
Benefits: simplicity, universal access, composability
Placement: after Architecture, before Requirements
Addresses the 'why this obscure protocol' question upfront
2026-02-20 00:25:27 +01:00
Levi Neely
536b358006
Sort session list by creation time (newest first)
...
Backend changes:
- Add CreatedAt() to Session interface
- Implement CreatedAt() in tmux.Session (field already existed)
- Sort Manager.List() by creation time descending
Benefits:
- Deterministic ordering (no more random map iteration)
- Newest sessions appear first (most useful)
- All clients benefit immediately
- head -1 now reliably gets most recent session
README:
- Update example to use head -1 for newest session
- Document that list is sorted newest first
2026-02-19 23:51:10 +01:00
Levi Neely
17ad0fcafd
Fix example: list order is non-deterministic
...
- Remove tail -1 hack (doesn't work - map iteration is random)
- Show listing sessions first with output format
- Document that order is non-deterministic
- Use manual ID selection (realistic workflow)
The session list iterates over a Go map, which has non-deterministic
order. Cannot rely on tail/head to get 'last created' session.
2026-02-19 23:48:16 +01:00
Levi Neely
4a9179f6e2
Fix filesystem tree and example: use mailbox system
...
Filesystem tree fixes:
- Remove non-existent 'in' and 'out' files
- Add missing 'role', 'tasks', 'tmux' files
Example fixes:
- Use mailbox system for prompts (user/mail with JSON message)
- Show reading response from user/inbox
- Correct workflow: prompts are messages, not direct writes
The old 'in/out' interface no longer exists - all communication
is via the mailbox system
2026-02-19 23:46:08 +01:00
Levi Neely
79bc7bf724
Fix 9P filesystem example
...
- Rename 'Example' to 'Basic Session Example' (more descriptive)
- Fix workflow: get actual session ID from list (not hardcoded)
- Add comments explaining each step
- Show both 'running' and 'idle' as possible states
Previous example used hardcoded ID that wouldn't exist
2026-02-19 23:44:44 +01:00
Levi Neely
d07315a772
Reorganize README for logical flow
...
New section order:
1. Architecture/Requirements/Installation/Usage (getting started)
2. Configuration (env vars, templates) - before backends
3. Backends & Sandboxing (references Configuration templates)
4. 9P Filesystem (understand backend first, then filesystem)
5. Workflows (uses 9P concepts)
6. MCP Integration (alternative integration method)
7. Troubleshooting (end)
Improves flow: config before use, concepts before advanced features
2026-02-19 23:42:04 +01:00
Levi Neely
9fbcf8de51
Document all configurable options
...
Add Configuration section with:
- Environment variables table (NAMESPACE, ANVILLM_*, API keys)
- Sandbox config templates table (CWD, HOME, TMPDIR, XDG_*)
- Reference from Backends section
- Remove redundant debug/terminal note from Troubleshooting
All behavior-changing environment variables now documented
2026-02-19 23:39:57 +01:00
Levi Neely
24e30baa28
Fix content contradictions
...
- Fix mailbox filesystem: add outbox, completed, mail (was missing)
- Clarify 'Archive' command maps to 'completed' directory
- Fix mailbox example: use 'completed' not 'archive'
- Remove non-existent 'Log' command from Acme tag and table
- Add missing 'Get' command to Acme table
- Fix backends description: sandboxed with network (not 'full permissions')
- Reorder Acme commands table for clarity
2026-02-19 23:34:13 +01:00
Levi Neely
ff4dcf4692
Internal consistency pass
...
- Remove duplicate Namespaces line
- Standardize separator style: em dash (—) throughout
- Remove trailing periods from standalone statements
- Merge Acme tag and interaction notes inline
- Reorder Emacs keys to match TUI order (help before quit)
- 5 lines removed (consolidation)
2026-02-19 23:30:59 +01:00
Levi Neely
45155650ce
Add MCP integration section
...
- Document anvilmcp MCP server
- Installation command
- List available tools
- Explain use case (Claude Desktop, Cline integration)
2026-02-19 23:27:21 +01:00
Levi Neely
d05ebac197
Final editing pass: maximum condensation
...
- Ultra-condense architecture to 3 lines
- Merge requirements into single line
- Flatten service integration commands
- Condense all clients into single-line descriptions
- Compress Acme commands table
- Remove obvious statements (path validation)
- Merge events & mailbox into single code block
- Ultra-condense backends/sandboxing/config/kernel/self-healing
- Compress workflows to essentials
- 118 lines removed (50% reduction from previous)
- Total: 322 lines removed from original (63% reduction overall)
2026-02-19 23:25:26 +01:00
Levi Neely
8ea62fd0fc
Update README: document layered sandbox configuration
...
- Replace single sandbox.yaml with layered system
- Document: global.yaml → backends/ → roles/ → tasks/
- Note default role (roles/default.yaml) when none specified
- Add tip: make default.yaml permissive for quick starts
- Update troubleshooting reference
2026-02-19 23:23:03 +01:00
Levi Neely
751bac6543
Second editing pass: aggressive condensation
...
- Flatten service integration into single block
- Consolidate all client sections (TUI/Emacs/web/Acme) into compact format
- Merge beads commands into single code block
- Combine events & mailbox into one section
- Merge backends, self-healing, sandboxing into unified section
- Condense workflows: merge skills, examples, patterns
- Tighten troubleshooting table
- 126 lines removed (38% reduction from previous)
2026-02-19 23:20:34 +01:00
Levi Neely
2b101355e9
Edit README for clarity and concision
...
- Tighten architecture, requirements, and usage sections
- Condense UI sections (TUI, Emacs, web, Acme) - compact key lists
- Streamline 9P filesystem, beads, events, mailbox sections
- Condense workflow examples and self-healing explanation
- Remove redundant statements and obvious details
- 78 lines removed (35% reduction)
2026-02-19 23:17:52 +01:00
Levi Neely
8e421ead7d
Fix outdated README: remove Sandbox command, add Inbox/Archive, update config instructions
2026-02-19 23:12:21 +01:00
Levi Neely
1d0aa9d091
Update README: add beads, events, mailbox, skills, and anvilmcp
2026-02-19 23:10:36 +01:00
Levi Neely
ff2bd372c1
improve send message api
2026-02-17 18:20:01 +01:00
Levi Neely
b66e9822a2
Fix attach for new tmux session naming and clean up emacs prompts
...
Front-ends were constructing anvillm-{backend} but backend now uses
anvillm-{namespace}. Updated Assist and emacs to read tmux target from
the tmux file instead of constructing it from backend name.
Also removed broken direct prompt functionality from emacs (P and M-P
keybindings that used /in file directly).
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-17 15:32:48 +01:00
Levi Neely
9ff6262d62
Rename peer-bot skill to anvillm-communication
...
- Rename skill to reflect broader scope (agent-to-agent, agent-to-user)
- Add AnviLLM references to all workflow agent contexts
- Update README example to use mailbox pattern
- Fix heredoc delimiter conflict (EOF -> MSGEOF) in injected prompt
2026-02-16 15:35:46 +01:00
Levi Neely
b47f6ba97d
Add Log command to Acme interface
...
Opens streaming log window that displays session chat history.
Window is named /AnviLLM/Log.{session-id-or-alias} and streams
log data continuously, marking window as clean after each write.
2026-02-15 12:09:14 +01:00
Levi Neely
ab5f9705cd
Remove redundant Refresh command from Acme interface
...
Get command now simply reads from agent/list since anvilsrv
handles session state management. Removed client-side PID
checking and refresh logic.
2026-02-15 11:47:11 +01:00
Levi Neely
ea32a6a17f
Update project description in README.md
2026-02-14 18:19:09 +01:00
Levi Neely
8b35365305
docs: add self-healing feature documentation
2026-02-14 17:53:33 +01:00
Levi Neely
38f3a8e765
Add web interface (anvilweb)
...
- Minimal Go web server with REST API for session management
- Single-page UI using Pico CSS (12KB, classless framework)
- Features: create sessions, send prompts, edit context/alias, control sessions
- Security: input validation, XSS prevention, path validation
- Auto-refresh every 5 seconds
- Documented security model (no authentication, localhost/SSH tunneling recommended)
2026-02-14 17:02:43 +01:00