LoopOps ADE for VS Code
The bundled loopops-sidecar binary is unsigned. This build has no
macOS notarization and no Windows Authenticode signing. The first time the
extension runs it, your OS will warn you:
- macOS: Gatekeeper will refuse to open it. Run
xattr -d com.apple.quarantine <path-to-loopops-sidecar> on the binary
inside the extension's install directory, or approve it once from
System Settings → Privacy & Security → "Allow Anyway" after the first
blocked attempt.
- Windows: SmartScreen will show "Windows protected your PC." Click
More info → Run anyway to continue.
This is a deliberate v1 trade, not an oversight — signing and notarization
are a follow-up change with their own credential and CI-secret
requirements. Nothing about your LoopOps account or your code is affected
by this warning; it only means the binary's publisher identity has not been
cryptographically attested yet.
What this is
LoopOps ADE runs the same agent runtime as the desktop app, inside VS Code:
sign in once, bind each open workspace folder to a LoopOps project, and run
plans, chats, and SDD flows without leaving the editor. Chat history and memory
are always scoped to the active project, so changing the active folder also
changes the conversation context.
This release ships the full extension: activation, sign-in, secret storage,
workspace-folder → project bindings, the sidecar process lifecycle, and the
chat/plan/SDD/settings webview.
Requirements
- VS Code
^1.90.0 or a compatible fork. This floor is load-bearing: earlier
releases ship Node 18, where globalThis.crypto is not available by
default, and the shared sidecar client mints request ids with
crypto.randomUUID().
- A LoopOps account, reached through the same sign-in flow as the desktop app
(
loopops.signIn in the Command Palette).
Commands
| Command |
What it does |
LoopOps: Sign In |
Opens the LoopOps sign-in page in your browser and completes the session in this window. |
LoopOps: Pick Repository |
Chooses which open workspace folder is active, when more than one is open. |
LoopOps: Open Panel |
Opens the chat/plan/SDD/settings panel. |
Project-scoped history
There is no This project / All history toggle. The panel loads chat history
for the active project automatically; it does not require a scope button. New
session follows the same lifecycle as Desktop and starts a fresh conversation
for that project.
A stable marker at <project>/.loopops/project.json identifies the project:
{
"version": 1,
"projectFingerprint": "…",
"source": "remote"
}
The marker can also include remote or seed. A Git remote is preferred; a Git
project without one receives a generated seed, with a path-derived fallback
where necessary. The fingerprint survives an absolute-path move and scopes local
history and memory across VS Code and Desktop. The marker is identity-only: its
writer creates .loopops only under an existing root and preserves meaningful
trailing spaces when parsing Git roots (it strips CR/LF only).
Runtime databases are shared per machine rather than stored in a project:
| Platform |
Data directory |
| macOS |
~/Library/Application Support/ai.loopops.ade |
| Windows |
%APPDATA%/ai.loopops.ade |
| Linux |
$XDG_DATA_HOME/ai.loopops.ade, or ~/.local/share/ai.loopops.ade |
memory.db and sessions.db live there. .loopops/sessions.db is retired and
used only for migration. VS Code migrates legacy session archives from former
globalStorage locations into the shared directory; legacy memory.db is not
migrated.
SDD and settings
Choose Direct or SDD in the Chat composer. Direct chat can run shell
commands from assistant code blocks; if the command fails, the output is written
back into the session and the agent is prompted to fix the failure, matching
Desktop behavior.
SDD automatic mode runs its
phases through; manual mode pauses at gates and offers Continue,
Regenerate with feedback, and Stop. Its live view shows status, the
current phase, activity, tasks/agents, and clears answered permission asks
immediately.
SDD sends isolate: false, so its artifacts are written to the open workspace,
matching Desktop. Work and issue runs still use worktrees. Saving settings
reconfigures the sidecar before the UI reports success, so the next run uses the
current gates, TDD, review budget, and model-routing choices.
Debugging from source
- Run
bun install at the repository root.
- Copy
.env.example to .env.local at the repository root and set
VITE_LOOPOPS_SUPABASE_ANON_KEY. Keep this file local; it is gitignored.
- Open the repository root in VS Code, select Run LoopOps ADE Extension,
and press
F5.
The pre-launch task builds host and webview source maps, compiles the native
sidecar for the current machine, and stages it at the runtime path expected by
the extension. The debug host also disables the legacy loopops.loopops
extension so its views and status bar cannot shadow this extension. Preparation
fails before launch with a clear message if .env.local or the anon key is
missing. See TESTING.md for the manual verification flow. After source changes,
rebuild and reload the Extension Development Host before verifying behavior.
First run
The panel guides setup before enabling a run:
- Select Sign in and finish the browser flow.
- Choose the active repository when the window contains multiple folders.
- Select a project from the list grouped by LoopOps workspace.
To switch later, open the workspace/project switcher from the profile card at
the top of the panel: it lists every workspace and its projects, and picking a
different project rebinds the active repository through the same path as
initial onboarding. The menu also offers repository picking for multi-folder
windows.
If the account has exactly one workspace containing exactly one project, the
extension binds it automatically; otherwise it never guesses. A failed chat
request remains in the composer and its error is shown in the panel.
Known limitations (v1)
- No macOS notarization and no Windows Authenticode signing — see the notice
above.