Merge pull request #1 from NERVsystems/claude/local-llm-feasibility-gVLhq Add OpenAI-compatible local LLM backend support
Add OpenAI-compatible backend for local LLM support (GPT-OSS) Implement OpenAIClient backend that speaks the OpenAI Chat Completions API (/v1/chat/completions), enabling llm9p to work with any local model server: Ollama, vLLM, llama-server, LocalAI, or LM Studio. Primary target is GPT-OSS (OpenAI's open-weight MoE models), but any model served via these platforms works. The backend supports: - Blocking and streaming chat completions - Tool/function calling with STOP:/TOOL: formatting - Token counting from API usage (with estimation fallback) - Conversation history, system prompts, temperature control - Stateless AskWithRequest for session isolation Usage: ./llm9p -backend openai -openai-url http://localhost:11434/v1 -model gpt-oss:20b Also fixes pre-existing stale mock backends in test files (AskWithRequest signature was out of date with the Backend interface). https://claude.ai/code/session_017qVVZUUhfCCvNkMYmXDZAa
feat(llm9p): Implement clone-based session architecture Replace per-fid session model with Plan 9 clone pattern: - Reading /n/llm/new creates a session and returns its ID - Each session gets its own directory: /n/llm/<id>/ - Per-session files: ask, ctl, model, system, thinking, context, metrics - AskWithRequest method for stateless CSP-style LLM calls - Session settings (model, temperature, thinking) are per-session - Remove old ask.go, context.go in favor of session-scoped files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat(llm9p): Add per-fid session isolation and prefill support - Add SessionManager for per-fid conversation isolation - Each 9P fid now gets its own conversation history - Add FidAwareFile interface for files needing fid context - Add /n/llm/prefill file for assistant response prefill - Prefill helps keep model in character (e.g., "[Veltro]") - Update ask, new, context files to use session manager - Fix context contamination between parent and subagent Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
feat: Initial implementation of llm9p - LLM as 9P filesystem Exposes Claude as a 9P filesystem, enabling interaction through standard file operations: - ask: write prompt, read response (shim pattern) - model: read/write current model name - temperature: read/write sampling temperature - tokens: read-only token count from last response - new: write to reset conversation - context: read JSON history, write to add system message - _example: usage documentation - stream/chunk: blocking read for streaming responses Includes: - Full 9P2000 protocol implementation (stdlib only) - Anthropic SDK integration with conversation state - Streaming support Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>