eLLM Code · the eLLM extension for Visual Studio Code

An AI coding assistant that shows its working, on your own models

eLLM Code lives inside VS Code and talks only to your organisation's eLLM endpoint. Describe a change and it reads the code, proposes a plan, edits across files as reviewable diffs, runs your tests with your approval and proves the result before it says "done". Every step is logged. Nothing leaves your environment.

Your endpoint onlytalks to your organisation's eLLM gateway and nothing else
Nothing lands unseenevery edit is a diff card and every command needs a click, until you say otherwise
90+ skillsbuilt-in house-style guides, from n8n automations to Moodle plugins, plus your own
Audit log by defaultan append-only record per session, kept inside the project folder
How a change happens

Ask for the outcome, review the evidence

You never paste code into a chat window. eLLM Code reads the repository itself, cites the files and lines it used, and treats "done" as something to prove rather than announce.

1

Ask

Type a plain-language request, or right-click a file for Explain, Find Bug, Refactor, Generate Tests or Generate Documentation.

2

It reads

Activity lines show each file read, search and folder listing. Answers cite path and line, and a click opens the spot in the editor.

3

Reviewable diffs

Each create, edit or delete arrives as a card with the diff. Apply, Copy or Reject. Rejections are reported back so it never assumes a change landed.

4

Runs with your OK

Tests and builds are proposed as commands with a Run button and live output. Long jobs go to the background; dangerous commands always ask.

5

Verified

Imports, the project's own tests, formatter and linter, and a headless browser load for web apps. Timeouts count as unresolved, never as passes.

Built for teams that must show their working

Brakes, records and a way back

An agent that edits files and runs commands needs more than a good model. These are the controls that make eLLM Code usable in a college, a council or a defence supply chain.

Append-only audit log

One JSON line per event: each request with endpoint, model, user identity and active skills; each file read; each proposal and whether you applied or rejected it; each command with its exit code. Kept under the project folder, on by default.

Checkpoints and revert

A snapshot before every request and after every applied file, held in a shadow repository separate from your git history. Revert the last request or restore any checkpoint without losing the conversation.

Stop, and self-pausing

Stop kills everything it started, foreground or background. It also pauses itself with a stated reason when it loops, rewrites the same file repeatedly, or hits the per-task command limit, so a stuck model cannot burn credits unattended.

Keys in secret storage, two hosts only

The API key lives in VS Code's operating-system-encrypted secret storage, not in a settings file that could be committed or synced. The extension contacts your configured endpoint and, only when you confirm a Report Issue, your own GitLab. Telemetry and external providers are policy flags that are always treated as off.

Security review on demand

Review Changes reads your uncommitted diff like a reviewer would. Security Review looks specifically for injection, secrets, unsafe deserialisation and similar classes of problem, across the diff or the whole project.

Support bundle, secrets redacted

One markdown file with environment, configuration and recent traces, keys removed, that you can read before sending. Report Issue files it to your own GitLab project after showing you exactly what will be posted.

Beyond a single edit

Plan whole features, remember the project, hand work to specialists

The same loop scales up from a one-line fix to a feature build, with the plan and the project's standing knowledge kept in files your whole team commits.

Plan Mode

Requirements, then architecture, then an ordered task list, with clarifying questions asked as a form inside the chat. You choose the autonomy:

  • Guided pauses after each planning stage for your review
  • Autopilot plans and builds through to verified completion
  • Assist plans only and changes no code
  • A guided intake form captures language, framework, storage, auth, platform and testing choices up front
  • Standalone commands produce just the requirements, the architecture plan or the task breakdown

Project memory

A small .project-ai/ folder the assistant reads with every request and keeps current: purpose and coding standards, a never-change list, decisions, the task list and a devlog.

  • Commit it and every developer's assistant shares the same context
  • Close VS Code mid-build and type "catch up" the next day to carry on from the first unfinished task
  • Compact it when it grows; every rule and decision is kept

Specialist agents

Focused roles with their own instructions, subject to the same approvals as the main assistant.

  • QA Agent writes and runs tests and reports coverage gaps
  • Documentation Agent keeps README, docs, architecture and devlog current
  • Bug-fixing Agent reproduces, diagnoses, fixes and verifies, and is started automatically when a build ends with unresolved errors
  • Add your own agent as a markdown file; results are labelled "unverified" if anything was left unchecked

Skills

Reusable guides that teach the assistant how to do one kind of work in your house style, included with every request for the session.

  • More than ninety built in, from n8n automations to Moodle plugin development
  • Add team skills to the workspace or point at a shared library; workspace skills override shared, shared override built-in
  • A "Skill applied" chip shows when a reply drew on one, and the audit log records which were active

Works with your models

Built for gateways that serve more than one model, and for the realities of local hardware.

  • Send planning, architecture and review turns to a stronger reasoning model, or let the eLLM router decide by intent
  • Native function calling with automatic fallback to the text protocol for models that reject it
  • Compact prompt option for small or quantised local models
  • Commands generated for your OS and shell, including Remote-SSH, WSL and dev containers
  • Sizes each conversation to the routed model's context window, trimming whole turns so a tool call is never split from its result
  • Sends the developer's identity and an intent label (planning, code edit, review, bug investigation) so a shared gateway can attribute usage and route by task
  • A built-in benchmark suite scores a new model or gateway configuration on protocol fidelity, context recall and decode speed before you roll it out

Web apps, checked in a browser

A static front-end can pass every syntax check and still throw on load.

  • The preview serves the workspace locally, loads it in headless Chromium and captures console errors
  • Ask "fix the preview errors" and it proposes fixes, then previews again
  • Runs automatically before a Plan Mode web build is declared complete
Teaching Mode

For students, apprentices and anyone learning a new language

Colleges asked us for an assistant that teaches rather than just types. With Teaching Mode on, eLLM Code explains as it works, in the voice of a senior developer mentoring a junior.

  • Each change carries a short "Why" note on the concept or pattern behind it
  • Bugs are named by their class when fixed, with how to spot the next one
  • Trade-offs are spelled out and review feedback reads as mentoring, not a terse diff
  • If the model forgets the explanation, it is asked to supply it, so the teaching is always delivered
  • A per-installation setting, so it can be on for learning projects and off for production work

Combined with local models and the audit log, it gives a computing department an AI pair-programmer that is safe to put in front of learners and simple to supervise.

WhyA retry loop should back off between attempts so a struggling server is not hammered. Exponential backoff doubles the wait each time; the cap stops it growing forever.
- const res = await fetch(url);
+ let delay = 200;
+ for (let attempt = 0; attempt < 4; attempt++) {
+   try { return await fetch(url); }
+   catch (e) { await sleep(delay); delay = Math.min(delay * 2, 2000); }
+ }
Getting started

Installed and connected in a few minutes

eLLM Code ships as a VSIX from your platform team and needs VS Code 1.85 or newer. Everything else is a chat-completions URL, a model name and a key.

  1. Install the extension. Run code --install-extension ellm-code-<version>.vsix, or use Install from VSIX in the Extensions view.
  2. Open a project. An eLLM item appears in the status bar and a chat icon in the editor title bar.
  3. Connect it. Enter your gateway's chat-completions URL and model identifier in the settings panel. The default model name is ellm-code.
  4. Set the key. Paste it once; it is held in secret storage and the field stays blank afterwards.
  5. Ask something. "What does this project do?" confirms the connection with a streamed, cited answer.
  6. Switch on what you trust. Auto-apply and Auto-run are per-repository toggles, off by default on every new project.

See it work on your own code

We will connect eLLM Code to a demonstration endpoint and walk through a real change in one of your repositories, or talk through what a private deployment looks like.

Search