# Elyra > A self-extensible AI coding agent for the terminal. 30+ LLM providers, built-in tools, session management, and a rich extension system. Free to use, no telemetry, no vendor lock-in. ## Overview - Site: https://elyracode.com - Documentation: https://elyracode.com/docs - Changelog: https://elyracode.com/changelog - npm: https://www.npmjs.com/package/@elyracode/coding-agent ## Start here - [Overview](https://elyracode.com/docs/index): Elyra is a minimal terminal coding harness. It is designed to stay small at the core while being extended through TypeScript extensions, skills, prompt templates, themes, and elyra packages. - [Quickstart](https://elyracode.com/docs/quickstart): This page gets you from install to a useful first elyra session. - [Using Elyra](https://elyracode.com/docs/usage): This page collects day-to-day usage details that do not fit on the quickstart page. - [Providers](https://elyracode.com/docs/providers): Elyra supports subscription-based providers via OAuth and API key providers via environment variables or auth file. For each provider, elyra knows all available models. The list is updated with every - [Settings](https://elyracode.com/docs/settings): Elyra uses JSON settings files with project settings overriding global settings. - [Keybindings](https://elyracode.com/docs/keybindings): All keyboard shortcuts can be customized via ~/.elyra/agent/keybindings.json. Each action can be bound to one or more keys. - [Sessions](https://elyracode.com/docs/sessions): Elyra saves conversations as sessions so you can continue work, branch from earlier turns, and revisit previous paths. - [Compaction](https://elyracode.com/docs/compaction): LLMs have limited context windows. When conversations grow too long, elyra uses compaction to summarize older content while preserving recent work. This page covers both auto-compaction and branch sum ## Customization - [Extensions](https://elyracode.com/docs/extensions): Extensions are TypeScript modules that extend elyra's behavior. They can subscribe to lifecycle events, register custom tools callable by the LLM, add commands, and more. - [Skills](https://elyracode.com/docs/skills): Skills are self-contained capability packages that the agent loads on-demand. A skill provides specialized workflows, setup instructions, helper scripts, and reference documentation for specific tasks - [Prompt Templates](https://elyracode.com/docs/prompt-templates): Prompt templates are Markdown snippets that expand into full prompts. Type /name in the editor to invoke a template, where name is the filename without .md. - [Themes](https://elyracode.com/docs/themes): Themes are JSON files that define colors for the TUI. - [Elyra Packages](https://elyracode.com/docs/packages): Elyra packages bundle extensions, skills, prompt templates, and themes so you can share them through npm or git. A package can declare resources in package.json under the elyra key, or use conventiona - [Custom Models](https://elyracode.com/docs/models): Add custom providers and models (Ollama, vLLM, LM Studio, proxies) via ~/.elyra/agent/models.json. - [Custom Providers](https://elyracode.com/docs/custom-provider): Extensions can register custom model providers via elyra.registerProvider(). This enables: ## Extensions - [Overview](https://elyracode.com/docs/extensions-overview): Elyra extensions are first‑party packages that add tools, skills, and slash commands to the agent. Install only what you need — every extension is opt‑in, works standalone, and can be enabled per proj - [Subagents](https://elyracode.com/docs/ext-subagents): @elyracode/subagents lets Elyra split a task across narrow, single‑purpose agents. Each subagent has its own role, tool access, and prompt, so it produces sharper results than asking one generalist to - [Doctor](https://elyracode.com/docs/ext-doctor): @elyracode/doctor runs a suite of static checks against the current project and feeds the report back to the agent. Use it to triage a new repo, sanity-check before a release, or auto‑heal common issu - [Test Generation](https://elyracode.com/docs/ext-test-gen): @elyracode/test-gen reads the actual source code, detects the testing framework, and writes tests that exercise the real behavior — not placeholder expect(true).toBe(true) stubs. - [Performance Tools](https://elyracode.com/docs/ext-perf-tools): @elyracode/perf-tools scans your code and logs for the most common performance regressions in database‑backed applications. - [Design Tools](https://elyracode.com/docs/ext-design-tools): @elyracode/design-tools closes the loop between writing markup and seeing it. The agent can render HTML in your browser, capture screenshots for visual QA, and audit views for design‑system consistenc - [Flux UI](https://elyracode.com/docs/ext-flux-ui): @elyracode/flux-ui gives the agent up‑to‑date knowledge of every Flux UI component by fetching livewire/flux directly from GitHub. It also converts existing Blade views and scaffolds new pages with Li - [Database Tools](https://elyracode.com/docs/ext-db-tools): @elyracode/db-tools lets the agent answer questions about your real data without leaving the terminal. Connections are read from your project’s .env automatically, and writes are blocked by default. - [HTTP Tools](https://elyracode.com/docs/ext-http-tools): @elyracode/http-tools lets the agent send real HTTP requests, read external documentation, and parse OpenAPI specs — so it can verify endpoints, learn new APIs, and generate integration code grounded - [Git Intelligence](https://elyracode.com/docs/ext-git-intel): @elyracode/git-intel gives the agent enough git context to brief you at the start of a session, write a clean commit message from your staged diff, or draft a PR description that actually reads. - [Herd](https://elyracode.com/docs/ext-herd): @elyracode/herd connects the agent to your local Herd environment so it can answer "is anything broken locally?" without you leaving the terminal. - [Laravel Starters](https://elyracode.com/docs/ext-laravel-starters): @elyracode/laravel-starters lets the agent reference the official Laravel starter kits as source of truth — and optionally write them straight into your project. - [i18n Tools](https://elyracode.com/docs/ext-i18n-tools): @elyracode/i18n-tools scans your Blade, Vue, and React views for user‑facing strings that should be translated, and compares your locale files to surface keys that are missing in some languages. ## Stack profiles - [Overview](https://elyracode.com/docs/stacks-overview): Stack profiles bundle deep, framework‑specific knowledge as Elyra skills. Once installed, the agent knows your stack’s conventions, component APIs, lifecycle rules, and common gotchas — and it’s detec - [TALL](https://elyracode.com/docs/stack-tall): @elyracode/stack-tall is the official Elyra stack profile for TALL. The agent learns Livewire 4’s lifecycle, attributes, hydration rules, Alpine patterns, Flux UI conventions, file structure, and the - [VILT](https://elyracode.com/docs/stack-vilt): @elyracode/stack-vilt teaches the agent the Inertia.js protocol, Vue 3 Composition API patterns, Laravel controller conventions, useForm workflows, partial reloads, TypeScript type sync, and the file - [RILT](https://elyracode.com/docs/stack-rilt): @elyracode/stack-rilt is the Elyra stack profile for React‑on‑Laravel. It covers the Inertia.js 2 protocol, React 19 patterns with TypeScript, useForm, shadcn/ui components, Laravel controller convent - [PrimeVue](https://elyracode.com/docs/stack-primevue): @elyracode/stack-primevue adds comprehensive PrimeVue 4 knowledge — DataTable, Dialog, forms, navigation, Toast, ConfirmDialog, the theming system, and how it all integrates with Laravel Inertia. - [Filament](https://elyracode.com/docs/stack-filament): @elyracode/stack-filament covers every major surface of Filament v5: resources, tables, forms, schemas, actions, widgets, infolists, notifications, multi‑tenancy, navigation, and testing. - [Laravel AI SDK](https://elyracode.com/docs/stack-laravel-ai): @elyracode/stack-laravel-ai is a stack profile dedicated entirely to the Laravel AI SDK. It covers agents, sub‑agents, tools, structured output, streaming, embeddings, vector stores, images, audio, re ## Reference - [Session Format](https://elyracode.com/docs/session-format): Sessions are stored as JSONL (JSON Lines) files. Each line is a JSON object with a type field. Session entries form a tree structure via id/parentId fields, enabling in-place branching without creatin ## Programmatic Usage - [SDK](https://elyracode.com/docs/sdk): The SDK provides programmatic access to elyra's agent capabilities. Use it to embed elyra in other applications, build custom interfaces, or integrate with automated workflows. - [RPC Mode](https://elyracode.com/docs/rpc): RPC mode enables headless operation of the coding agent via a JSON protocol over stdin/stdout. This is useful for embedding the agent in other applications, IDEs, or custom UIs. - [JSON Event Stream Mode](https://elyracode.com/docs/json): Outputs all session events as JSON lines to stdout. Useful for integrating elyra into other tools or custom UIs. - [TUI Components](https://elyracode.com/docs/tui): Extensions and custom tools can render custom TUI components for interactive user interfaces. This page covers the component system and available building blocks. ## Platform Setup - [Windows](https://elyracode.com/docs/windows): Elyra requires a bash shell on Windows. Checked locations (in order): - [Termux on Android](https://elyracode.com/docs/termux): Elyra runs on Android via Termux, a terminal emulator and Linux environment for Android. - [tmux](https://elyracode.com/docs/tmux): Elyra works inside tmux, but tmux strips modifier information from certain keys by default. Without configuration, Shift+Enter and Ctrl+Enter are usually indistinguishable from plain Enter. - [Terminal Setup](https://elyracode.com/docs/terminal-setup): Elyra uses the Kitty keyboard protocol for reliable modifier key detection. Most modern terminals support this protocol, but some require configuration. - [Shell Aliases](https://elyracode.com/docs/shell-aliases): Elyra runs bash in non-interactive mode (bash -c), which doesn't expand aliases by default. ## Development - [Development](https://elyracode.com/docs/development): See AGENTS.md for additional guidelines.