Rust · Native · v0.1.0

A vector editor for logos and icons.

You shouldn't need a full design suite to draw a 24-pixel icon. Strek is a native app with eight tools, two panels, and an export that crops to your artwork instead of the canvas. It's written in Rust.

Layers left, canvas centre, Design right. All three stay open.

What it does

Draw, arrange, export.

Three jobs. Everything in the app serves one of them, which is why there are no submenus to dig through and nothing hidden behind a mode you have to remember.

01 / Draw

Eight tools, one key each.

Frames, rectangles, ellipses, lines, Bézier paths, and text sit on F, R, O, L, P and T. Shift constrains, Alt draws from the centre, and snapping catches edges, centres, corners and text baselines while you drag.

02 / Arrange

Structure you can see.

Group, ungroup and reorder in the Layers panel. Align six ways, distribute in either direction, nudge one unit with an arrow key or ten with Shift. The Design panel holds position, size, rotation, opacity, fill and stroke. Adaptive rulers, grids, persistent guides and explicit snapping controls keep placement precise; the Color Library keeps named palettes close at hand.

03 / Export

Files you can hand over.

Standard and outlined SVG, PNG, JPEG and WebP all crop to the visible artwork, so there's no dead margin around the mark. Documents save as plain .strek.json, which reviews in a pull request like any other text file.

Selection

Click the group, reach inside on purpose.

A plain click takes the outermost container, so dragging a logo moves the whole logo rather than one stray path out of it. Getting at a nested shape is a deliberate act: hold the modifier to grab what's under the cursor, or walk the hierarchy with Enter and Shift+Enter. The layer tree is there when you want it, not a prerequisite for every edit.

These are defaults. Every binding lives in a keybindings.json you can edit.

  1. Click
    Take the container

    The group moves as one unit.

  2. ⌘ / Ctrl + Click
    Reach inside

    Select the exact shape under the cursor.

  3. Enter
    Step down

    Move one level into the current group.

  4. Shift + Enter
    Step back up

    Return to the parent without leaving the canvas.

Automation

Drive the canvas without borrowing the cursor.

A running Strek window exposes the same commands, pointer events and screenshots used by the app over a local, per-user socket.

01 / Command line

Script the existing editor.

Use strek automate to read state, run editor actions, send canvas-local pointer events, insert text, show or hide UI, and save a PNG screenshot. No synthetic mouse movement required.

02 / AppleScript

Native macOS handlers included.

The app bundles AUTOMATION.applescript with strekState, strekAction, strekPointer, strekText, strekUi and strekScreenshot handlers. Run it directly with osascript or load it from your own AppleScript.

03 / MCP

Give an agent typed tools.

Launch strek mcp over stdio to expose get_state, perform_action, pointer, insert_text, set_precision, guide, saved_color, set_ui and screenshot. Strek must already be running when a tool is called.

MCP client configuration
{
  "mcpServers": {
    "strek": {
      "command": "/opt/homebrew/bin/strek",
      "args": ["mcp"]
    }
  }
}

Under the hood

Rust core, thin shell.

The editor core is a plain Rust crate: scene graph, transactional edits, patch-based undo, and a display list. The desktop app draws that display list with GPUI; the SVG renderer writes the same one to a file, so an export matches what was on screen.

Install the latest Strek release with the generated shell installer:

install
curl -fsSL https://github.com/HelgeSverre/strek/releases/latest/download/strek-installer.sh | sh

macOS · Apple Silicon and Intel

Read the source