Auric Artisan LiveGo live with the whole site—not only the front end.
Watch the full walkthrough · Follow the full guide · Read the transcript · Download captions Install and go live
Real-use gallery
The public Live media kit also includes the MP4, poster, full-resolution screenshots, captions, timed transcript, build-along guide, music provenance, and integrity manifest. Auric Live serves your workspace over a real local HTTP server with live reload,
and then keeps going where a static server stops: it forwards No runtime dependencies, no external analytics, no account. One extension, one port, with an optional bounded diagnostic record that stays inside the project. The developer dashboard inside your websitePress Alt+Shift+D while viewing any page served by Auric Live. A full-screen, keyboard-accessible dashboard opens over the real website and sorts information from most urgent to least urgent: The compact tab rail keeps only one panel mounted at a time: Overview, Network, Server, Storage, Environment, or Requests. Arrow keys move between tabs. Pause metrics freezes local sampling immediately; Refresh performs one explicit update.
Every measurement says whether it is measured, estimated, or unavailable. In
particular, a zero browser transfer size is labelled likely cached rather
than treated as proof; only the server's cached flag or The shortcut is configurable with The diagnostics are demand-driven. With the dashboard closed there is no FPS animation loop, no storage scan, and telemetry reuses its last safe snapshot. While open, cursor events and dashboard updates are coalesced into animation frames, page-wide measurements run during browser idle time, hidden tabs stop sampling, and unchanged server snapshots do not rebuild the UI. Only the selected panel is rendered, which keeps large pages responsive. Auric custom cursorThe served page can replace the website's CSS cursor—including image cursors— with a small gold dot and context-aware ring. Links and buttons expand the ring; text fields use a narrow text shape. It never captures clicks and does not use Pointer Lock. Open the dashboard and choose Use site cursor to turn it off immediately; the choice is remembered for that origin. The replacement activates only after its stylesheet loads successfully. Touch
and coarse-pointer devices, forced-colour mode, and printing keep the native
cursor automatically. Browser chrome outside the page is owned by the browser
and cannot be replaced. Set The run target dropdownOne control decides what is actually serving your site, and it is the same list everywhere it opens:
All three are the same intention written for three different shells, and all
three are accepted. The environment assignments are lifted out and applied to
the process, so a line copied from a PowerShell prompt still works when the
editor is running under bash. Whatever you pick is then supervised: its port is adopted from its own output, it is restarted if it dies, and your pages reload when it comes back. Where the dropdown is
The control panel and preview use the suite's shared OneDrop dropdown — the same component, markup and keyboard contract as the rest of Auric Artisan: arrow keys move, Home and End jump, letters type-ahead, Enter picks, Escape closes and returns focus to the button. 60 seconds
That is the whole first run. Everything below is there when you need it. What makes it more than a static serverYour API, on the same origin
The page and the API now share an origin. No CORS shim, no
It waits for the backend instead of failing at itA refused connection in development almost never means the backend is broken. It means it has not finished compiling, or it restarted two seconds ago. So a request to a backend that is not answering is held, not failed: Auric Live polls for it and forwards the request the moment it is up. If it takes longer than the budget, the page becomes a waiting screen that refreshes itself and names the port it is waiting on — never a dead-end 502. When a backend that was up goes away and comes back, every connected page reloads, because whatever it is holding came from the version that just disappeared. That covers the normal rhythm of backend work: save, restart, look at the page. Started your API by hand on a port nothing knows about? Find a Running Backend scans the ports these tools actually use and offers to forward to whichever answers. An API that does not exist yet
Mock routes are matched before the proxy, so you can override one endpoint
of an otherwise real API — the login that is not built yet, or the failure case
you cannot reproduce on demand. Bodies substitute A real REST backend from one JSON file
Every collection gets the full set of routes — list, read, create, replace, merge, delete — with filtering, sorting, pagination and relationship expansion:
Forms submit, lists paginate, a delete removes a row and it stays gone.
Pagination sends PHP and CGI
With HTTPS, without openssl and without committing a certificate
Service workers, The phone in your pocketBound to A request inspector that answers the real questionThe browser's network tab shows you the response. It cannot tell you which
rule produced it — and when A slow network, on every device
Latency and bandwidth shaping applied at the server, so it reaches the phone on
your LAN too — where devtools throttling is not available. Preview inside the editorOpen Preview Beside puts the page next to the code, with device presets (iPhone SE, iPhone 15, Pixel 8, iPad, laptop, desktop), a rotate button and automatic scaling so a 1600px desktop preview still fits a split editor. Live reload works there exactly as it does in a real browser. Live reload, in detail
The client is injected as a same-origin Project-wide exclusions:
|
| Language | Detected | Started with |
|---|---|---|
| PHP | artisan, composer.json, symfony.lock, any .php |
php artisan serve, symfony server:start, php -S, or CGI per request |
| Python | manage.py, requirements.txt, main.py |
python manage.py runserver, flask run, uvicorn, python -m http.server |
| Ruby | bin/rails, Gemfile, _config.yml |
bin/rails server, ruby app.rb, bundle exec jekyll serve |
| JavaScript | package.json, server.js, deno.json, bun.lockb |
the project's own script, node <entry>, deno task start, bun run dev |
| Go | go.mod, hugo.toml |
go run ., hugo server |
| Java | pom.xml, build.gradle |
mvnw spring-boot:run, gradlew bootRun |
| C# | *.csproj, *.sln |
dotnet watch run |
| Rust | Cargo.toml |
cargo run |
| Elixir | mix.exs |
mix phx.server |
| HTML | always | Auric Live's own static server |
Each entry shows why it matched before anything runs — manage.py is present,
composer.json is present — because starting a process on a guess nobody can
see is not something an editor extension should do. Auric Live: Show Detected
Run Targets prints the whole list with its reasons.
Framework projects, supervised
Serving a Vite, Next, Nuxt, Astro, SvelteKit, Angular or CRA project as plain files produces an unbuilt page and a wall of module errors. Auric Live detects the project on the first Go Live and offers the right thing instead: start the framework's own dev server and forward to it, so its hot module replacement stays in charge and you still get one origin, the request inspector, throttling and the phone URL.
The dev server is supervised, not just launched, which is the difference between a proxy that works and one that 502s:
- It adopts the port the framework actually chose. Vite moves to 5174 when 5173 is taken and says so in one line of output. Auric Live reads that line and repoints the proxy — no guessing, no editing configuration.
- It restarts the process when it dies, with a growing delay and a ceiling, and it says why in its own output channel. A dev server that keeps failing is reported once rather than retried forever.
- It reloads your pages when it comes back, so a crash-and-restart ends with the page you were looking at, updated.
- Stopping it removes the forwarding it added, so you are never left with a proxy rule pointing at something that no longer exists.
Set auricLive.devServer.autoStart to skip the question entirely, or
useTerminal to run it in a normal terminal when the command needs typed input.
Django, Rails, Laravel and Flask are detected as backends and offered an /api
proxy. A folder of HTML is served directly, which is the point.
Changes apply themselves
Editing settings or auric.live.json takes effect immediately. Only a change to
the port, host, root, mount point or TLS settings rebinds the listener;
everything else — proxy rules, mock routes, headers, throttling — is applied to
the running server without dropping a single connection, and your pages reload
once it is done.
Everything else it does
- Directory listings that sort by name, size or date, and escape every file name they print.
Rangerequests, so<video>and<audio>are seekable.- Brotli and gzip, negotiated properly, including
identity;q=0. - ETags and
If-None-Match/If-Modified-Since, with a cache policy that defaults to never caching, because a stale asset that survives a reload is the single most confusing thing a live server can do. - Clean URLs (
/aboutservesabout.html), a single-page fallback that does not swallow/assets/app.js, a custom 404 page, and a mount point for serving under a sub-path. - CORS, cross-origin isolation headers for
SharedArrayBuffer, per-glob custom headers, and basic authentication for when the server is on a shared network. - Multi-root workspaces: one server per folder, each with its own port and configuration.
- A port that walks upward when yours is busy — or refuses to move, for a project whose port is part of an OAuth callback.
Configuration
Everything is a VS Code setting under auricLive.*. A project can also carry an
auric.live.json beside its package.json, which overrides those settings and
travels with the repository — comments and trailing commas allowed. Create
Project Config File writes a commented starting point.
Order of precedence: built-in defaults → your settings → the project file → anything you changed from a command this session.
The complete reference is in the Settings UI (search Auric Live); the
frequently used ones are:
| Setting | Default | What it does |
|---|---|---|
auricLive.root |
workspace folder | Folder to serve, e.g. dist |
auricLive.port |
5500 |
0 picks a free port |
auricLive.host |
0.0.0.0 |
127.0.0.1 keeps it off the network |
auricLive.spa.enabled |
false |
Client-side router fallback |
auricLive.cleanUrls |
false |
/about → about.html |
auricLive.liveReload.reloadOnSave |
save |
save is stable; change watches the tree; off is manual-only |
auricLive.liveReload.cssHotSwap |
true |
Swap stylesheets instead of reloading |
auricLive.liveReload.debounceMs |
350 |
Quiet period used by filesystem-change mode |
auricLive.dashboard.enabled |
true |
Inject the website developer dashboard |
auricLive.dashboard.shortcut |
Alt+Shift+D |
Open/close the dashboard inside the page |
auricLive.dashboard.customCursor |
true |
Use the accessible Auric page cursor |
auricLive.dashboard.sampleIntervalMs |
1000 |
Open-dashboard server refresh cadence; local heavy measurements run during idle time |
auricLive.records.enabled |
true |
Save bounded local session diagnostics |
auricLive.records.maxRequests |
200 |
Sanitized requests retained per session |
auricLive.records.maxSessions |
12 |
Rotated sessions retained in .auric-live/ |
auricLive.proxy |
[] |
Forward paths to a backend |
auricLive.mock.enabled |
false |
Answer declared endpoints |
auricLive.cgi.enabled |
false |
Run PHP and other CGI handlers |
auricLive.https.enabled |
false |
Serve over TLS |
auricLive.throttle.profile |
off |
Simulate a slower network |
auricLive.cache |
no-store |
Caching policy for served files |
auricLive.upstream.wait |
true |
Hold requests while a backend starts |
auricLive.upstream.reloadOnRecover |
true |
Reload pages when a backend returns |
auricLive.devServer.autoStart |
false |
Start the detected dev server on Go Live |
auricLive.devServer.autoRestart |
true |
Restart it when it dies |
Keyboard
| Shortcut | Action |
|---|---|
Ctrl+Alt+L |
Go Live |
Ctrl+Alt+Shift+L |
Stop all servers |
Ctrl+Alt+J |
Open the run target dropdown |
Ctrl+Alt+K |
Open preview beside |
Ctrl+Alt+Shift+K |
Open the Auric Live menu |
Ctrl+Alt+U |
Reload every connected page |
Ctrl+Alt+Shift+I |
Open the control panel |
Alt+Shift+D in a served page |
Open/close the in-page developer dashboard |
Use Cmd instead of Ctrl on macOS. Every action is also in the Command
Palette under Auric Live, and the status bar item opens the full menu.
Troubleshooting
The port is already in use. Auric Live walks to the next free port by
default. Set auricLive.portStrategy to fail if your port must not move.
The phone cannot reach it. Check that auricLive.host is 0.0.0.0, allow
the firewall prompt for Code, and make sure the phone is on the same network —
a guest network usually cannot see your machine. The Servers view lists
every address and marks the virtual adapters that will not work.
The page says it is waiting for a backend. Something has / or /api
proxied to a server that is not answering. The waiting page names the port. Use
Find a Running Backend if you started it yourself on a different one,
Start Framework Dev Server if it is not running at all, or Stop Framework
Dev Server to remove the forwarding altogether. The page reloads itself as
soon as the backend answers, so you can leave it open.
The page keeps refreshing. The default Save mode does not watch raw
filesystem activity, socket reconnects do not refresh, and the brake stops
automatic recovery loops. Check that auricLive.liveReload.reloadOnSave is
save (or select off for manual-only testing). If you deliberately selected
change, the output log names the file behind every reload; add only generated
paths to auricLive.liveReload.ignore, then run Auric Live: Resume Live
Reload. Turning live reload off entirely is Ctrl+Alt+Shift+K → Toggle live
reload.
Nothing reloads. Look at the log (Auric Live: Show Log). The usual
causes are a path matched by .auricignore-live or
auricLive.liveReload.ignore, a page whose own
Content-Security-Policy blocks the client — the log says so explicitly — or a
network file system where recursive watching is unavailable, in which case set
auricLive.watch.pollIntervalMs.
The browser warns about the certificate. It is self-signed, which is
unavoidable without a local trust store entry. Accept it once for the address,
or install mkcert and point
auricLive.https.certPath and keyPath at what it produces.
PHP does not run. cgi.enabled must be on, php-cgi — not php — must be
on your PATH, and the workspace must be trusted. A full path works too, and does
not need quoting even if it contains spaces.
The dashboard shortcut does nothing. Confirm auricLive.dashboard.enabled
is on and that the page's script-src, connect-src, and style-src CSP rules
allow same-origin resources. Auric Live reports CSP blocks as runtime findings.
The shortcut intentionally does not take over while you are typing in an input,
textarea, select, or editable region.
The native cursor is still visible. Touch/coarse-pointer devices,
forced-colour mode, a blocked same-origin stylesheet, or the remembered Use
site cursor choice all keep it. Toggle Use Auric cursor in the dashboard,
or clear the auric-live:custom-cursor local-storage preference.
Privacy and safety
- No external telemetry, analytics endpoint, account, or Auric cloud call. Dashboard summaries travel only over the page's same-origin WebSocket to the local server, and local recording can be disabled completely.
- The QR code is generated locally; your LAN address is never sent anywhere.
- Authorization, cookie and set-cookie headers are masked before a request is ever stored, and again before anything is exported.
- Dot-files are hidden by default, so
.envand.gitstay out of a server that may be reachable from your network. .auricignore-liveexcludes sensitive or generated project paths from serving, listings, watching, reloading, and records..auric-live/is never served, even when ordinary dot-files are allowed.- Running a framework dev server and executing CGI handlers require a trusted workspace, because both run a program named by workspace configuration.
- No runtime dependencies. The HTTP server, the WebSocket implementation, the certificate generator and the QR encoder are all part of this extension.
Part of the Auric Artisan suite
Auric Live shares its design language — and nothing else, by construction — with Auric Artisan Terminal, File System, Icons, Theme and Studio. Each extension is self-contained: no shared state, no cross-extension imports, no coordination required.
Licensed under the Auric Artisan Free Use Licence. Free for everyone, for anything; not for redistribution or resale.









