Extend Design. Without the risk.

Checks, exporters, generators, and panels. Every plugin is signed, sandboxed, and only touches what you allow.

launch-poster.varialA3 · 300 dpiCGPP
Summer
Drop
Available Sep 30 · usevarial.com New 12
100%

Four ways to extend. One set of rules.

Plugins plug into the same commands, panels, and history you already use.

Checks

Find problems, pin them to the layer, and offer a fix you can preview.

Checks3 open
  • Badge crosses the trimprint.bleedMove inside
  • Caption is hard to readtext.low-contrastFull opacity
  • Hidden layer “Draft logo”export.hidden-layerWaive
Errors can’t be waivedRun again

Importers and exporters

Bring files in and write them out. Every byte is hashed as it streams.

Export app iconsStore Asset Exporter
  • AppIcon-1024.pngsha256:4be1…
  • AppIcon-512.pngsha256:09ac…
  • AppIcon-180.pnghashing…
  • AppIcon-120.pngqueued
Writes only to the folder you pickedCancel

Generators

Patterns, templates, and materials. Same seed, same result.

HalftonePattern Forge
Seed4812
Density

Commands and panels

Plugin commands sit in the command bar next to yours.

  • CGContrast Guard: Check this file⌘⇧C
  • CGContrast Guard: Check selection
Plugin commands live next to yours↑↓

You decide what it touches.

Before a plugin runs, you see exactly what it asked for. Turn anything off. Anything it didn’t ask for is blocked.

  • Read, edit, files, and network are separate
  • Scoped to a selection or one document
  • Tied to the exact build you approved
  • Change your mind any time
CGContrast Guard wants tov2.3.1
Signed by Signal FoundryEd25519 · sf-2026-01
  • Read this documentActive document only
  • Edit your selectionSelected layers, through undo
  • Show a panelRight sidebar
  • Reach the internetNot requestedBlocked
  • Write filesNot requestedBlocked
Packagesha256:7b04…e91a

A bad plugin can’t hang your file.

Plugins run in a sandbox Varial chooses. Each call has a time, memory, and rate limit. Break them and the call is cut off.

  • Isolated threads and secure sandboxes
  • Limits on every call
  • Failed calls never reach your document
  • Disabled after repeated failures
Pattern ForgeHealthy

Varial picks the sandbox. The plugin cannot.

CPU per call38 / 250 ms
Calls per minute14 / 120
Memory38 / 64 MB
  1. generate.halftone38 ms
  2. generate.grid21 ms
  3. preview.noise44 ms
3 restarts left before it is disabled

Updates you can take back.

Pin a version, or let updates install on their own. If one misbehaves, roll back to the exact build you had.

  • Automatic updates or pinned versions
  • One-click rollback with settings
  • Keep or delete plugin data on uninstall
  • Export a package for offline review
Preferences/Extensions2 on
CGContrast GuardSignal Foundry
Update automaticallyNew versions install on their own
Versions
  1. 2.3.1Checks text over video framesCurrent
  2. 2.3.0AAA target per frame
  3. 2.2.4Faster scans on big files

The rules plugins live by. No exceptions.

These are enforced by Varial, not promised by publishers.

01

Signed by the publisher

A signature proves who made it. It never grants access on its own.

02

Permissions match the build

Your approval is tied to the exact package. One changed byte and we ask again.

03

Varial picks the sandbox

Plugins never choose their own isolation or limits.

04

Failures never reach your file

A stale or failed call is dropped before it can touch history.

05

Bad updates are quarantined

If an update fails, your working version and its data stay put.

06

Safe mode is always there

Start with only built-in code if something goes wrong.

Ship a plugin.

Describe it in a manifest, ask for the least you need, and sign it with your key. Varial handles the sandbox, the permissions, and the undo.

  • Ed25519 signing, SHA-256 file list
  • Isolated, memory-safe execution
  • Safe document commands, no raw writes
  • Sell it on the Marketplace
{
  "schema": "varial.design.extension-manifest.v1",
  "id": "com.signalfoundry.contrast-guard",
  "name": "Contrast Guard",
  "version": "2.3.1",
  "publisher": {
    "id": "signal-foundry",
    "displayName": "Signal Foundry",
    "keyId": "sf-2026-01"
  },
  "compatibility": {
    "product": { "minInclusive": "1.0.0", "maxExclusive": "2.0.0" },
    "api": { "minInclusive": "1.0.0", "maxExclusive": "2.0.0" },
    "documentSchema": { "minInclusive": 1, "maxInclusive": 1 }
  },
  "entryPoints": [
    { "id": "main", "kind": "worker", "path": "dist/main.js", "sha256": "sha256:9c1e…" }
  ],
  "capabilities": ["design.document.read", "design.document.write", "design.ui.panel"],
  "documentAccess": { "readScopes": ["active-document"], "writeScopes": ["selection"] },
  "resources": [],
  "resourceRequest": { "cpuMsPerCall": 250, "callsPerMinute": 120 },
  "package": { "digest": "sha256:7b04…", "files": [] },
  "integrity": { "algorithm": "Ed25519", "keyId": "sf-2026-01", "signature": "…" }
}

Popular plugins. Ready to install.

New

Contrast Guard

$12

Flags low-contrast text and fixes it in one click.

SF Signal Foundry 4.94.2k installs
Plugin

Print Preflight

$18

Bleed, resolution, and ink checks before it goes to press.

RL Railcore Labs 4.81.9k installs
New

Pattern Forge

$15

Seeded patterns that come out the same every time.

NB Nova Bureau 4.73.3k installs
Plugin

Store Asset Exporter

$9

Every app icon and store screenshot size in one export.

RL Railcore Labs 4.62.6k installs

Questions? Answers.

Where do I manage plugins?

In Preferences, under Extensions. Turn them on or off, check permissions, pin versions, and roll back.

Can a plugin send my designs somewhere?

Only if it asks for network access to specific sites and you allow it. Most plugins never ask.

What if a plugin crashes?

The call is cut off and your file stays as it was. After repeated failures the plugin is turned off.

Do plugin changes show up in undo?

Yes. Every change goes through normal history, labeled with the plugin that made it.

Can I build my own?

Yes. Request developer access and we will set you up with signing keys and the manifest format.

Make Design do more.

Install a plugin in a click. Remove it just as fast.