Analog Canvas
Analog Canvas is a local-first, connectivity-aware schematic editor for the web. Draw and organize hierarchical circuits, import structural SPICE, export deterministic SPICE/Spectre netlists and vector SVG/PDF, publish selected work to the Community Gallery, and connect authorized Agents through the same typed edit model.
Browse the Gallery · Open the editor · Windows preview (ZIP) · Documentation · GitHub repository
Highlights
- Connectivity-aware editing: place devices, route wires, distinguish
- Reusable hierarchy: author each schematic as a Cell, define independent
- Projects and interchange: save a private Cloud Project, import/export
.icproj.json, import structural .cir, .sp, .spi, and .scs files, and export
deterministic structural SPICE or Spectre. The hosted editor also provides
saved simulation source folders and a fixed ngspice/SKY130 environment for qualified
OP, DC, AC, TRAN, and Noise runs.
- Publication-ready output: the web editor's SVG and PDF exports remain
- Community publishing: signed-in users can publish selected circuits with
- Agent integration: the typed Snapshot and transaction API is available
Project ownership and privacy
An explicit File / Save updates one private Cloud Project in place. Local
.icproj.json files are portable import/export and backup artifacts; browser
recovery is an origin-local crash-safety copy. Neither is confused with formal
Cloud Save, and Community Gallery entries remain separate public publications.
Shelf cards offer Version history for the latest three earlier saves: compare
component changes, restore with conflict protection, or create an independent
private branch. Restoring a draft never updates its Gallery publication.
Refreshing the editor restores that browser window’s open project tabs,
including unsaved circuit content, the active tab, and view positions. This
browser-local workspace does not replace Cloud Save or portable file backups;
undo stacks and unfinished text-field edits are not restored.
Hosted topology checks run against the clicked snapshot in a private background
task. Refreshing or closing the page does not cancel it; reopen the editor to
view progress/results. Results remain available for seven days. Comparisons
use bounded search and explicitly mark incomplete coverage; the best 20
results are retained within an 8 MiB result budget. Vite without the hosted
backend shows a local-only fallback that requires keeping its page open.
The hosted service keeps its visitor reporting first-party and honors browser
Do Not Track instead of embedding a third-party analytics tracker.
Check and Save runs ERC and visual checks on demand, displays findings in Issues and the canvas, and saves through that same Cloud Project service. Findings do not block saving; editing invalidates the last check without automatically rerunning it. File / Save and Ctrl+S remain save-only.
Start here
- Use the hosted product: browse the
- Try the Windows desktop preview: download and run the preview.
- Learn the editor: Getting started,
- Understand the product: current architecture
- Develop or contribute: development workflow,
For Claude Code, run pnpm setup:skills once in each checkout or worktree before
starting a session. Choose slash commands from the shared
workflow stage entries. Both clients use the
same checked-in original skills;
setup and conflict recovery
describe how the local registration works.
Windows desktop preview
Download Windows x64 ZIP · Release details
- Download and extract the whole ZIP.
- Open the extracted
Analog-Canvas-Windows-x64directory and run
Analog Canvas Preview.exe. Keep its sibling resources
together; the .exe alone will not work. No Node.js, pnpm or developer tools
are required.
- Draw a new project and press Ctrl+S. It saves automatically in
%USERPROFILE%\Analog Canvas\Projects. Local projects offers search,
filters and New above a compact list. Click a project name to open it; use its
star for favorites and More for rename, independent copies, history and
recoverable deletion. Folder and external-file settings are collapsed.
- File → Open Project… opens
.icproj.jsonor.icprojin place; Save
- Each tab keeps its own file. Locations are shortened in the interface, with
- User Components supports local circuit and artwork definitions through
%APPDATA%\Analog Canvas\components.json; placed project instances retain
their captured version when the library changes.
- About, on the right, shows data locations and offers opt-in Windows
.icprojassociation.
This is an unsigned, offline preview with no installer or automatic updates. It shares the Web editor's drawing model and exports SVG/PNG/PDF and SPICE/Spectre files. Account, Cloud, Gallery, Agent and simulation services are unavailable. Local history keeps three prior saves; recovery remains a safety copy. See the full instructions and limitations.
The linked package passed real Windows EXE acceptance, offline request checks
and credential/private-file scanning. It includes corresponding source,
attribution, ACCEPTANCE.json and SECURITY.json tied to the same source commit.
See the security audit and its limitations.
This ZIP is 155.2 MiB (about 343.5 MiB extracted). Most is Electron's
Chromium/runtime, retaining English and Simplified/Traditional Chinese resources.
The rest is the editor, desktop host, corresponding source, licenses and
acceptance records. It contains no developer
node_modules or user projects. Keep the bundled runtime and resources together.
Run locally
Requires Node.js 24 or newer and pnpm 11.16.0 or newer.
pnpm install --frozen-lockfile
pnpm build
pnpm dev
Run pnpm build once after installing, and again after pulling package
changes: the development server's Vite configuration loads some workspace
packages from their built dist/ output.
Open the displayed loopback URL and choose Editor, or open its
/editor route directly. Create a circuit from the component palette, or
import one .cir, .sp, .spi, or .scs entry together with its local include
files.
Click Agent to open a connection message, then copy it into your Agent chat. The development server starts the local Agent relay on first use; no separate Worker command or cloud account is needed. Keep the editor open while the Agent works. Sessions expire after 30 minutes without Agent operations or manual edits; continued activity renews them. Stopping the development server also ends local sessions; after restarting it, create a new connection. Cloud account, Gallery, and hosted simulation services are not started by this local relay.
Development follows the original-skill workflow: confirm requirements, implement and review, then deliver through a pull request and verify Production. Explicit local-only and branch-trial scopes stop at their requested boundary. See validation timing and delivery cadence.
What the repository contains
apps/editor/: React/SVG editor plus the Gallery, account, moderation, and
apps/editor/analytics/: the complete first-party analytics module: page,
apps/local-host/: loopback-only production host for the installable PWA.apps/mcp-server/: packaged stdio MCP adapter for authorized Agent sessions.packages/model/,packages/project-protocol/, andpackages/edit-engine/:
packages/derived/: read-only connectivity, diagnostic, and geometry
packages/components/: one canonical JSON
packages/spice/,packages/devices/,packages/symbols/, and
packages/netlist/: structural SPICE import, built-in device facts, symbol
semantics, and deterministic design-netlist export.
packages/exporters/andpackages/render-svg/: formal SVG, PNG, and PDF
packages/math-typesetting/: bounded LaTeX formula typesetting for rich-text
packages/simulation-service/andpackages/spice-run/: shared simulation
packages/agent-adapter/,packages/agent-client/, and
packages/agent-routing/: shared Agent contract, client, and routing logic.
worker/: Cloudflare Worker host and Durable Objects for static hosting,
containers/: simulator images, gateways, and operator-host topologies for
netlists/: one circuit per directory for the SPICE import corpus,
fixtures/: Project, SPICE, rawfile, export, Agent API, and visual-reference
scripts/andconfig/: build, generation, validation-gate, release, and
tools/andreferences/: manual Razavi calibration and PDF extraction
eda/: Canvas export and single/batch EDA imports,
docs/: current architecture, user guides, normative contracts, ADRs and
The Razavi reference manifest
is the sole visual authority. Every non-documentation merge to main deploys
to Production; release tags and explicit dispatches may redeploy a commit that
is already on main.
See deployment for the release and recovery contract.
Netlist conversion
POST /api/netlist/convert accepts { "text": "...", "source": "spice", "target": "spectre" }
and returns translated text or line-specific diagnostics. The Worker and local
Vite server expose the same pure converter; SCS import uses it locally too.
No Python daemon, simulator or account is required. The structural subset adapts
netlist-crawler under its MIT license.
See the conversion contract for supported
syntax and the attribution.
License
Copyright © 2026 Zengchun Chen and Zhishuai Zhang.
Except where otherwise noted, Analog Canvas is licensed under the
GNU Affero General Public License v3.0 only
(AGPL-3.0-only). Modified versions that are distributed or made available
for remote network interaction must provide their Corresponding Source under
the same license. Third-party dependencies, reference material, and assets
retain their respective copyright and license terms.
Citation
If you use Analog Canvas in research, teaching, or another publication, cite:
Zengchun Chen and Zhishuai Zhang. _Analog Canvas_. 2026.
Available at: https://analog-canvas.tokenzhang.com/
Source code: https://github.com/cascode-ai/analog-canvas
@software{chen2026analogcanvas,
author = {Chen, Zengchun and Zhang, Zhishuai},
title = {Analog Canvas},
year = {2026},
url = {https://analog-canvas.tokenzhang.com/},
note = {Source code: https://github.com/cascode-ai/analog-canvas}
}