Skip to main content

llmenv

direnv for Claude Code and other AI tools.

A single global agent config can't express β€œuse the office MCP server only at work” or β€œload these plugins only in this repo”. llmenv lets you declare configuration once, attach it to scopes via tags, and have the right slice activate automatically β€” from a shell hook that fires on every prompt.

Why llmenv

Per-environment config

Scopes detect network, host, user, and project context; tags attach config to the scopes that need it. A work MCP server or a personal plugin activates automatically β€” no global config bleeding into repos it doesn’t belong in.

One config, every tool

Capabilities β€” MCP, LSP, hooks, permissions, plugins β€” are declared once in an engine-neutral format. Adapters translate that into Claude Code, Crush, Opencode, and others, so switching tools doesn’t mean rewriting config.

Integrated memory

ICM gives agents durable, queryable memory across sessions β€” decisions and prior fixes survive /clear and new sessions. Codebase memory indexes your repo so agents search a knowledge graph instead of re-reading files cold.

Context management

Built-in guards keep long sessions on track: loop detection catches a model stuck repeating itself, a task tracker survives compaction, and context-mode offloads large tool output to a sandbox instead of bloating the conversation.

First-class MCP & LSP

MCP servers and language servers are top-level config, not an afterthought. Declare them once and every adapter renders the engine-specific wiring β€” transports, permission scoping β€” for you.

Plugins & skills, one bundle

Bundle skills, commands, agents, and MCP servers together and activate them by tag. llmenv translates plugin content across engines, so a Claude Code plugin still works when a teammate is on Crush.