Loomix Agent
Local-first AI coding agent for VS Code, powered by Ollama.
Features
- Chat in the VS Code side bar (Activity Bar → Loomix Agent → Chat)
- Read and search files in your workspace
- Propose file edits with confirmation
- Run terminal commands with confirmation (optional)
- Switch between Plan (no tools) and Build (tools allowed) modes
- Quickly pick the Ollama model from the status bar
- Use local Ollama or external providers: OpenAI, Anthropic, Gemini, and OpenRouter
- Keep editable project memory in
LOOMIX.md, CLAUDE.md, AGENTS.md, or .loomix/memory.md
- Run built-in slash workflows such as
/review, /fix-ci, /write-tests, /commit, and /pr
- Inspect plugin/MCP manifests, call stdio MCP tools, and use Git/CI workflow helpers
Requirements
- VS Code
- Ollama running locally
- At least one model pulled, for example:
ollama pull gpt-oss:20b
Usage
- Start Ollama.
- Open the side bar: Activity Bar → Loomix Agent → Chat.
- Click the
$(robot) model indicator in the status bar to select the main model.
Settings
This extension exposes these settings under llamaAgent.*:
llamaAgent.ollamaBaseUrl (default: http://127.0.0.1:11434)
llamaAgent.provider (default: ollama)
llamaAgent.model (default: gpt-oss:20b)
llamaAgent.codingModel (default: gpt-oss:20b)
llamaAgent.visionModel (default: ibm/granite3.3-vision:2b)
llamaAgent.fallbackProviders (default: [])
llamaAgent.openaiBaseUrl (default: https://api.openai.com/v1; can point to an OpenAI-compatible RAG/gateway endpoint)
llamaAgent.openrouterBaseUrl (default: https://openrouter.ai/api/v1)
llamaAgent.openaiApiKey
llamaAgent.anthropicApiKey
llamaAgent.geminiApiKey
llamaAgent.openrouterApiKey
llamaAgent.allowTerminal (default: true)
llamaAgent.terminalSandbox (default: strict)
llamaAgent.permissionScopes (default: [])
llamaAgent.ollamaKeepAlive (default: 5m)
llamaAgent.ollamaOptions (default: {})
llamaAgent.autoApproveEdits (default: false)
Model matrix
Local model quality controls how Codex-like the extension feels. The runtime supports weaker models, but they may need more fallback help.
| Model |
Default native tools |
Suggested context |
Status |
gpt-oss:20b |
on |
16k-32k if hardware allows |
Recommended local coding agent |
granite4.1:8b |
on |
8k-16k |
Fallback for smaller machines |
qwen2.5-coder / similar coder models |
off unless Ollama reports tool support |
8k-32k |
Often good with textual tool fallback |
| Small general chat models |
off |
4k-8k |
Limited planning/tool reliability |
Use the model health indicator in the header to inspect tool metadata, context window, and performance warnings. If native tool calls are malformed, disable llamaAgent.ollamaUseNativeTools and rely on the textual tool fallback.
Safety & permissions
- File writes require confirmation (unless
llamaAgent.autoApproveEdits=true).
autoApproveEdits and the webview automatic mode only approve workspace edit tools, not terminal or network tools.
- Terminal commands require confirmation and can be disabled via
llamaAgent.allowTerminal=false.
- Terminal commands run with the strict sandbox profile: no shell expansion for normal foreground commands, workspace-bounded cwd, and a minimal environment (
PATH, HOME, temp/user/locale values, CI, FORCE_COLOR). Background PTY sessions still use a shell, but with the same sanitized environment and command preflight.
- Explicit scopes can bypass prompts:
terminal:verify allows low-risk verification commands such as tests, typecheck, lint, and build.
terminal:command:npm test allows one exact command.
workspace-write:src/** allows writes under a path glob.
network:domain:example.com allows network tools for one domain.
network:deny denies network tools without prompting.
mcp:server:github allows one declared MCP server.
mcp:tool:github:create_issue allows one tool on one declared MCP server.
- “Always allow” choices are stored per-workspace in
.loomix/settings.local.json.
- Rollback asks for confirmation and previews the target files before restoring the last turn checkpoint.
MCP integrations
Declare stdio MCP servers in .loomix/plugins.json or .loomix/plugins/<name>/plugin.json:
{
"name": "local-tools",
"mcpServers": [
{
"name": "example",
"command": "node",
"args": ["./scripts/example-mcp-server.js"]
}
]
}
Use list_plugins to inspect declared servers, then mcp_call_tool with {"serverName":"example","action":"list_tools"} before calling a specific MCP tool. Remote URL transports are recognized in manifests but not executed yet.
Evaluation
src/evaluation/benchmark.ts defines 20 contract-based scenarios that cover bug fixes, build/test failures, diagnostics, dirty worktree preservation, permission denial, rollback, tool-call repair, file operations, model fallback behavior, and security blocks. Use these scenarios to compare models with the same task contracts instead of relying on a single demo.
evaluateBenchmarkReleaseGate turns those runs into a release gate. The default gate requires critical edit, tool-use repair, permission, verification, rollback, dirty-worktree, and security scenarios to be present and passing for each provider/model report before release.
Development
npm install
npm run build
npm test
Press F5 in VS Code to open the Extension Development Host.
Before publishing a VSIX, run:
npm run build
npm run package:preflight
npm run package
package:preflight checks that the build exists, node-pty is installed with a native binding/prebuild, and .vscodeignore does not remove runtime dependencies from the package.