
Security News
PHP Foundation Says Chainguard Broke Security Embargo Ahead of Emergency Patches
The PHP Foundation says Chainguard broke a security embargo ahead of critical RCE patches, as leaks disrupted the coordinated release.
Loom Code — AI-powered coding agent for the terminal. Multi-provider support including NVIDIA. OpenTUI interface.
An AI-powered coding agent for the terminal — a Claude Code / OpenCode clone with multi-provider support and a full terminal UI.
loom -p "query"| Provider | Sign-up | Key type |
|---|---|---|
| Anthropic | console.anthropic.com | Claude API key |
| OpenAI | platform.openai.com | API key |
| NVIDIA | build.nvidia.com | NIM API key (free tier available) |
| aistudio.google.com | Gemini API key (free tier available) | |
| OpenRouter | openrouter.ai | OpenRouter API key |
| Local | Install Ollama | No key needed (runs locally) |
git clone https://github.com/anomalyco/loomcode
cd LoomCode
npm install
Optional global install:
npm install -g .
# or
npm link
Install bun (for the full TUI):
# macOS / Linux
curl -fsSL https://bun.sh/install | bash
# Windows
powershell -c "irm bun.sh/install.ps1 | iex"
Configure API keys — pick one method:
# a) Environment variables (.env)
cp .env.example .env
# Edit .env with your key:
# ANTHROPIC_API_KEY=sk-ant-...
# NVIDIA_API_KEY=nvapi-...
# OPENAI_API_KEY=sk-...
# b) Interactive setup in the TUI
loom
> /connect nvidia
Initialize project memory (optional):
loom
> /init
Creates LOOM.md with a project-specific template.
loom # interactive TUI session
loom "explain this project" # start with initial prompt
loom -p "list files in src/" # one-shot, print result, exit
cat logs.txt | loom -p "explain" # analyze piped content
loom --version
loom --help
loom --basic # skip TUI, use line-mode REPL
| Command | Args | Description |
|---|---|---|
/help | — | Show all commands |
/build | — | Build mode — all tools |
/plan | — | Plan mode — read-only analysis |
/chat | — | Chat mode — no tools |
/connect | [provider] | Add/connect a provider |
/key | — | Edit API key for current provider |
/baseurl | [provider] [url] | Set provider base URL |
/model | [model-id] | Pick active model |
/models | — | List available models |
/providers | — | List supported providers |
/status | — | Show connection status |
/usage | — | Show token usage and billing |
/new | — | Start a new session |
/clear | — | Clear the chat |
/compact | — | Compact conversation |
/undo | — | Undo last exchange |
/redo | — | Redo last undone exchange |
/reset | — | Reset the session |
/settings | — | Toggle details/sidebar/etc. |
/sessions | — | Browse saved sessions |
/share | — | Export current session to JSON |
/export | — | Export to markdown |
/thinking | — | Toggle thinking visibility |
/details | — | Toggle tool detail visibility |
/init | — | Create LOOM.md |
/memory | — | Show memory files |
/doctor | — | Run diagnostics |
/skills | install|remove | Manage skills |
/mcp | add|remove|toggle | Manage MCP servers |
/debug | — | Show debug info |
/fork | — | Fork conversation |
/companion | — | Change companion pet |
/exit | — | Quit Loom Code |
| Key | Action |
|---|---|
| ESC | Interrupt current operation (aborts API requests) |
| Ctrl+C | Exit |
| Ctrl+B | Toggle sidebar (file browser) |
| Ctrl+P | Open command palette |
| Tab | Cycle mode (Build → Plan → Chat) |
| b | Leader — build mode |
| p | Leader — plan mode |
Install bun from bun.sh. If bun is already installed but not found, add ~/.bun/bin to your PATH.
Run /connect <provider> in the TUI and paste a new key. For environment variables, check your .env file.
Your key doesn't have access to the selected model. Some providers (especially NVIDIA NIM and OpenRouter) require accepting model terms on their website first.
Your API billing tier or rate limit has been reached. Upgrade your plan or switch to a different provider.
Try launching with --basic to use the line-mode REPL instead, which is lighter.
LoomCode/
├── bin/
│ ├── loom.js # CLI entry point
│ ├── loomcode.js # Alternative binary name
│ └── loom-tui.js # TUI launcher
├── src/
│ ├── index.js # Bootstraps CLI
│ ├── core/
│ │ ├── cli.js # Interactive REPL + slash commands
│ │ ├── session.js # Conversation + agent tool loop
│ │ ├── permissions.js # Command permission checks
│ │ ├── platform.js # OS/platform detection
│ │ ├── session-store.js # Persisted sessions
│ │ ├── usage.js # Token/cost tracking
│ │ └── plugin-cmd.js # Subcommand backend
│ ├── providers/
│ │ ├── index.js # ProviderRouter dispatch
│ │ ├── openai-compat.js # OpenAI-compatible provider base
│ │ ├── anthropic.js # Anthropic Claude connector
│ │ ├── openai.js # OpenAI GPT connector
│ │ ├── nvidia.js # NVIDIA NIM connector
│ │ ├── google.js # Google Gemini connector
│ │ ├── openrouter.js # OpenRouter connector
│ │ ├── local.js # Local (Ollama) connector
│ │ └── custom.js # Custom provider host
│ ├── tools/
│ │ └── index.js # read/write/edit/bash/grep/glob/webfetch
│ ├── config/
│ │ ├── settings.js # ~/.loom/config.json persistence
│ │ └── provider-cmd.js # /connect command logic
│ └── tui/
│ ├── App.tsx # OpenTUI root component
│ ├── store.ts # SolidJS reactive store
│ ├── theme.ts # Theme / palette
│ ├── components/
│ │ ├── InputBar.tsx # Chat input + autocomplete
│ │ ├── ChatArea.tsx # Message list
│ │ ├── BreadcrumbBar.tsx # Mode + provider bar
│ │ ├── Modals.tsx # Settings pickers
│ │ ├── Sidebar.tsx # File sidebar
│ │ └── Companion.tsx # Pet display
│ └── companion/
│ └── openpets.ts # OpenPets tts integration
├── package.json
├── LOOM.md # Developer reference
└── .gitignore
Config is stored at ~/.loom/config.json (permissions: 0600). Includes:
provider — default LLM providermodel — per-provider model IDs (editable in source or via /model)apiKeys — API keys from /connect or manual editbaseUrls — custom provider endpointsmaxTokens, temperature — model settingsAPI keys can also be set via environment variables: .env or ANTHROPIC_API_KEY, OPENAI_API_KEY, NVIDIA_API_KEY, GOOGLE_API_KEY, OPENROUTER_API_KEY etc.
Register in src/providers/<name>.js exporting { chat, stream, models }:
async function chat(messages, options) {
// call API, return { content: '...', toolCalls: [{...}], usage: {{...}} }
}
async function stream(messages, options, onDelta) {
// stream response, return { content, toolCalls, usage }
}
const models = [
{ id: 'my-model', name: 'My Model', provider: 'myname', context: 128000, priceIn: 0.50, priceOut: 2.00 }
];
module.exports = { chat, stream, models };
Then add it in src/providers/index.js under PROVIDERS.
MIT
FAQs
Loom Code — AI-powered coding agent for the terminal. Multi-provider support including NVIDIA. OpenTUI interface.
The npm package loom-code receives a total of 0 weekly downloads. As such, loom-code popularity was classified as not popular.
We found that loom-code demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
The PHP Foundation says Chainguard broke a security embargo ahead of critical RCE patches, as leaks disrupted the coordinated release.

Security News
PHP releases emergency patches for two critical RCE vulnerabilities as agencies urge organizations to take unpatched sites offline.

Threat Research
/Security News
A supply chain attack compromised LiteLLM 1.107.0 on PyPI and Docker, spreading malware that steals cloud credentials, developer secrets, and AI provider keys.