AetherStack for VS Code
One chat surface for local models, authenticated AI CLIs, and multi-model services.
AetherStack brings Codex, Antigravity, Grok, Cursor, Claude, Ollama, and configured
API providers into VS Code. It keeps model routing, service state, memory, and
local runtime controls in one place, then shows which CLI or model is actually
working instead of hiding execution behind a generic spinner.
What is new in 0.3.327
- Durable graph artifacts use consistent save/reload validation. Invalid lineage
or corrupt metadata stops consumption explicitly, without rewriting your saved
files. Valid artifacts and repeated identical saves remain compatible.
Recent improvements
Editable node profiles reach named-service contributors and final synthesis
without silent shortening. Graph and pipeline instructions use the same
explicit validation, and an invalid import cannot replace your saved valid
pipeline. Accepted profile text retains its original whitespace and content.
The CLI bridge preserves complete system instructions. Antigravity carries
long reviewer profiles over stdin; native-argument and Cursor system-context
limits now reject oversized input explicitly instead of silently shortening
the instructions. Missing native-role metadata uses the provider's declared
system flag.
Long Antigravity requests use stdin, avoiding Windows command-line size
failures without trimming the requested context. Only a successful terminal
result counts as its answer; progress and partial failures remain distinct.
Malformed checkpoint history and incorrectly typed iteration identities
fail before saving or claiming resume state. Valid empty histories remain
compatible.
Durable graph checkpoints reject invalid lease settings and clock readings
before they can corrupt resume state or bypass expiry. The saved state stays
recoverable after a rejected operation.
Parallel evidence workers retain distinct claim IDs through review and
synthesis, including long IDs and collisions with another worker's IDs.
Oversized evidence merges return a visible stage failure with diagnostics;
claims are never silently dropped.
Auto now runs the ordered multi-model synthesis service it advertises.
Single-model priority/failover remains available as an explicitly labeled
Direct mode instead of being presented as synthesized Auto.
Provider, embedding, capability-matrix, discovery, and Redis traffic now
authorizes every resolved and connected address. Connections are pinned to
the checked address, closing DNS-rebinding gaps after policy approval.
HTTP redirects are bounded and reauthorized. Cross-origin redirects lose
bearer/cookie/Host secrets, external-to-local redirects and HTTPS downgrades
are rejected, and unsafe request bodies are never silently replayed.
Reused Redis pool sockets are rechecked immediately before every command, so
an old connection cannot bypass a new request's classification policy.
Host CLI timeout and cancellation remain bounded even if an operating-system
process-tree kill produces no child close event.
Release builds are byte-reproducible across Windows, macOS, and Linux, and
Marketplace publication is checked against the exact tested VSIX before the
matching GitHub Release becomes public.
Answering retains the truthful Codex-style one-line process display with the
current CLI, stage, elapsed time, attempt position, and real failover.
How answering works
Open AetherStack: Show Chat View or AetherStack: Open Chat in Editor and
type normally.
- Auto classifies the task, assigns distinct lead/worker/review roles using
your configured model priority, and returns one synthesized answer. The live
process line always names the model and stage currently running.
- Direct explicitly sends the task to one suitable model from that same
priority order and fails over only after a real failure or incomplete answer.
It is visibly labeled Direct and never reported as synthesized.
- Named services such as Research, Planning, Coding, Testing, and Technical
Writing run explicit lead/worker/review stages and return one synthesized
answer. A single fallback response is not presented as successful synthesis.
- LLM sends the task to one model you choose explicitly.
Use /direct for the compatibility path, or /research, /plan, /code,
/test, /bugfix, and /preset <name> to select a specialist workflow. Use
the graph editor to build your own validated sequence.
Existing host CLI logins count. If Codex, Antigravity, Grok, Cursor, or Claude
is already authenticated, AetherStack can use it through a loopback bridge
protected by a random bearer token. Provider API keys and local Ollama models
can participate in the same ordered model catalog.
Getting started
Docker Desktop or Docker Engine is the only required system prerequisite. Keep
its daemon running, install the extension, then run AetherStack: Start All
Services or press Start all services in the Control Center.
code --install-extension AetherStack.aetherstack
The extension installs its matching runtime from the bundled archive, verifies
the SHA-256 checksum, and promotes only a complete versioned runtime. It then
starts the local Hub, LiteLLM gateway, and Open WebUI. Docker itself is not
silently installed because accepting its vendor license and administrator
changes belongs to the user.
Core commands
| Command |
Purpose |
| AetherStack: Show Chat View |
Focus persistent AetherStack Chat |
| AetherStack: Open Chat in Editor |
Open a restored editor-tab Chat surface |
| AetherStack: Open Control Center |
Inspect services, models, backends, and lifecycle controls |
| AetherStack: Start / Stop / Restart All Services |
Operate the local stack from VS Code |
| AetherStack: Refresh Service State |
Recheck live endpoints and show concrete failures |
| AetherStack: Refresh Authenticated Host CLIs |
Re-probe CLI logins and reconcile the Hub |
| AetherStack: Rebuild Preset Model Assignments |
Re-resolve preset roles from live capabilities and policy |
| AetherStack: Install Verified Runtime |
Reinstall this extension version's checksum-verified runtime |
| AetherStack: Set API Key Securely |
Store the gateway key in VS Code SecretStorage |
The full command list remains available in the Command Palette.
Privacy and local inference
Private mode projects the request to RESTRICTED: cloud models are withheld,
and model, embedding, storage, and tool effects must stay local. Private project
and session data uses isolated namespaces and is not merged into the common
memory pool on release. These are GDPR-ready privacy-by-design controls, not a
claim that every deployment is legally compliant or that the local store is an
encrypted vault.
For local inference, AetherStack prefers an existing host Ollama before its
container fallback:
| Platform |
Recommended local path |
| macOS |
Host Ollama with Metal on Apple Silicon |
| Windows with AMD |
Host Ollama using the validated Windows GPU path |
| Linux |
Host Ollama with the available CUDA, ROCm, or CPU backend |
Use a model large enough for the task. qwen2.5-coder:7b is the default
local-default backend and a practical baseline for coding work; smaller smoke
models remain available but can visibly reduce answer quality.
ollama pull qwen2.5-coder:7b
Settings
| Setting |
Default |
aetherstack.baseUrl |
http://127.0.0.1:4000/v1 |
aetherstack.chatUiUrl |
http://127.0.0.1:3000 |
aetherstack.defaultModel |
local-default |
aetherstack.stackPath |
Auto-detected runtime or checkout |
aetherstack.autoWireModels |
true |
aetherstack.showActiveModel |
true |
aetherstack.showThoughtProcess |
false (show stage summaries) |
aetherstack.showTokens |
true |
aetherstack.memoryContextKb |
512 |
aetherstack.autoSequenceMode |
sequential_exhaustion |
Provider keys are read from the selected runtime's .env; the gateway key is
stored in SecretStorage. AetherStack does not scan unrelated project .env
files. Open WebUI is published only on 127.0.0.1:3000, and its backend is not
exposed directly on a host port.
License
Source-available under the PolyForm Noncommercial License 1.0.0 included with
the extension. Commercial use, including resale, is not permitted.
Redistributions must retain the license and the required original-author
notice.