pscat

io.github.PSCatLabsPublished by GitHub account PSCatLabsv0.6.3Updated Oct 30, 2026

Render and debug PostScript to PNG, SVG or PDF, write handwritten notes, and make generative art

VerifiedSTDIODesktop onlyDeveloper ToolsMedia & Design

Overview

AI-generated overview

A PostScript interpreter exposed over MCP that lets an assistant render PostScript/EPS to PNG, SVG or PDF, draw generative art and chalkboard math.

What you can do
  • Render PostScript and EPS programs to PNG, SVG or PDF, including multi-page documents and page templates
  • Draw generative art, painting, printmaking, handwriting and lettering from seeded programs
  • Turn plain LaTeX into a chalkboard image with the chalkboard_math tool
  • Produce charts, plots and QR codes as exact vector geometry
  • Run as a local MCP server with ten tools, alongside Markdown skills for coding agents
When to use it
Useful when output must be exact and checkable rather than photorealistic: correctly spelled text, scannable QR codes, charts matching data, or print-ready vector PDF/SVG. Also handy for giving a model without image output a way to draw and inspect pictures.
Requirements
Runs as a local process over stdio. Install via cargo install pscat (provides pscat and pscat-mcp) or a prebuilt binary for macOS, Linux or Windows; a stable Rust toolchain is needed only when building from a checkout. Optional font catalog via pscat fonts install. No authentication, environment variables or headers declared.
Before you install
It executes PostScript programs supplied to it, so only render files and snippets you trust. Rendering writes output files to the local filesystem. No credentials or payments are involved.

Installation

In SourceWeft

  1. Open pscat in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

pscat

[The pscat logo: a cream sheet of paper with cat ears and a turned-down corner, with %! as its face, on a gold square] PostScript for precision and imagination.
The logo is drawn by pscat from its PostScript source.


pscat is a modern PostScript interpreter written in Rust for reliable document rendering and creative graphics. It renders PostScript and EPS to PNG, SVG and PDF from the command line, as an embeddable Rust library, in the browser via WebAssembly, or through MCP for AI agents.

  • Documents: letters, certificates, invitations and posters from page templates, charts and plots for papers, typewritten memos, and multi-page PDFs.
  • Art: generative patterns, watercolor and oil paint, printmaking, handwriting, chalkboards and display type.

pscat aims to replace Ghostscript for most PostScript work, and uses Ghostscript as its correctness reference: test expectations are pinned against Ghostscript's output. It can also show a program drawing, stroke by stroke, in a live window or in a browser tab.

[A certificate of achievement for Ada Lovelace, typeset in serif type inside a double rule on cream paper, from the pagekit certificate template] [Evening Stream, an autumn evening with a glowing sky, a stream tumbling over a small fall between dark banks, autumn trees and a cabin with a lit window]

Both drawn by pscat: a certificate from the page templates, and Evening Stream, painted with the paint library.

pscatlabs.github.io/pscat has the docs, the full gallery, a specimen of every font, and a live playground that runs the interpreter in your browser, no install.

[Cathedral Rose, a lace-like rosette woven from straight red and gold chords inside a gold ring on a dark purple ground] [Ring of Type, a sentence repeated around eleven concentric rings that shrink toward a large ampersand at the centre] [Hortus Machinalis, a herbarium plate with three branching plants labelled in Latin-style captions on cream paper]

[Ripple Range, a three-dimensional surface drawn as stacked ridges that shade from orange at the back to blue at the front, with a pale dip where the ripples meet] [Nightfall, Three Cuts, a moonlit ridge over water in three print styles: engraved sky and water, woodcut mountains and linocut reeds] [Alpine Lake, snow-capped peaks reflected in a still lake under a criss-cross brushed sky, with evergreens in the foreground]

When to use pscat

Use an image model (FLUX, Nano Banana, gpt-image and the like) for photorealism and loose painterly mood, where nothing has to be exact. Use pscat when the output must be exact and checkable: text spelled right, a QR code that scans, a chart that matches the data, a layout that prints at size as vector PDF or SVG, from a seeded program you can diff, edit and re-render, locally and free per image. Its watercolor and oil are deterministic, editable source too, and share a page with exact type and QR codes. It also gives a model with no image output of its own (as of November 2026, Claude) a way to draw real pictures and look at them. When to use pscat has the honest comparison and a decision table.

Install

sh
cargo install pscat          # pscat and pscat-mcp, from crates.iopscat fonts install          # optional: the full font catalog, as font packsnpm install pscat            # from 0.6.2: the wasm renderer for browsers and Node

Or download a ready-built binary for macOS, Linux or Windows from the releases page (no Rust needed). Getting started has the details. Then:

sh
pscat --png out.png some_file.ps

Quick start from a checkout

You need a stable Rust toolchain.

sh
cargo run -- --page 500x500 examples/sierpinski.ps   # watch it draw, livecargo run -- --png out.png examples/sierpinski.ps    # render to a PNG insteadcargo run -- -i                                      # REPL + window: type PostScript, watch it draw

A taste of the REPL:

PS> 40 2 add =42PS> mark 1 2 3PS<4> pstack321-mark-

To try it with nothing installed, open the playground. New to PostScript? Start with Learn PostScript. More sample programs live in examples/, and finished pieces in gallery/.

LaTeX on a chalkboard

pscat chalk writes a formula on a chalkboard from plain LaTeX, with no PostScript. The same LaTeX and seed give the same picture:

sh
pscat chalk 'x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}' -o quadratic.png
[x = (-b plus or minus the square root of b squared minus 4ac) over 2a, in white chalk on a slate board]

More boards, each with its command, are on the site; the options and the supported LaTeX are in the dry-media guide. MCP clients get the same board from the chalkboard_math tool.

Guides

Everything else is in docs/guides/:

For AI agents

pscat works well from a coding agent. The skills in plugin/skills/ (pscat, psart, psviz, functional-postscript) are plain Markdown any agent can read, and pscat-mcp is an MCP server with ten tools. In Claude Code, both come as one plugin: /plugin install pscat --marketplace PSCatLabs/pscat (after installing pscat; see plugin/README.md). In Codex: codex plugin marketplace add PSCatLabs/pscat, then codex plugin add pscat@pscat. See the agents guide. Any other MCP client can run pscat mcp (the same server as pscat-mcp), and pscat is listed in the MCP Registry from 0.6.3:

  • MCP Registry name: mcp-name: io.github.PSCatLabs/pscat

Contributing

Start with CONTRIBUTING.md (including how contributions are licensed), then AGENTS.md for conventions and SDLC.md for how changes land. Report security problems as SECURITY.md describes, and see docs/STABILITY.md for what stays stable between releases. docs/dev/HANDOFF.md orients you in the code, docs/dev/ARCHITECTURE.md explains the design, and docs/dev/ has the contributor notes, such as how to preview the website. docs/archive/ holds the project's history, including the original stage-by-stage status log.

Why

I used to write raw PostScript by hand in college and send it straight to a LaserWriter. This is a from-scratch Rust interpreter built to relive that — watching a hand-written recursive PostScript program draw itself, live, without depending on a decades-old C codebase to do it.

Licence

pscat's code is dual-licensed under MIT or Apache-2.0, at your option. The package also embeds font data: the Liberation faces, the URW Symbol and ZapfDingbats faces and the Courier Prime-derived typewriter outlines, under the SIL Open Font License 1.1, and the TeX Gyre faces, under the GUST Font License (LPPL-1.3c). That's why Cargo.toml says (MIT OR Apache-2.0) AND OFL-1.1 AND LPPL-1.3c. The font terms cover only the embedded font data, not pscat's code.

The fonts in fonts/catalog/ keep their own upstream licences. The original gallery, example and shirt art is dedicated to the public domain under CC0-1.0, with a few exceptions. CC0 grants no rights in the pscat name or logo. THIRD_PARTY_NOTICES.md lists what is under which terms.

SDLC

See SDLC.md for how this repo's development lifecycle works (issue → branch → PR → review → merge → cleanup) and the branch-protection/merge policy currently enforced on GitHub — generated and kept in sync by the sdlcify skill.

Source: README.md at commit 68ef3aa

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the package type cannot run in the sandbox.

Version history

1
  1. v0.6.3LatestOct 23, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts