
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
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.
Installation
In SourceWeft
- Open pscat in the dashboard and add it to a workspace.
- 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
Or download a ready-built binary for macOS, Linux or Windows from the releases page (no Rust needed). Getting started has the details. Then:
Quick start from a checkout
You need a stable Rust toolchain.
A taste of the REPL:
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:
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/:
- Getting started: build, install, command-line flags, output formats
- pscat in the browser and for AI agents
- Fonts and handwriting
- artkit: the generative-art toolkit, and style packs and page templates
- Painting and the landscape cookbook
- Printmaking and etching and dry media
- Lettering, headlines and apparel
- Charts and plots
- QR codes: encode a URL or other text as a QR symbol, drawn as vector geometry
- Functional PostScript: map, filter, fold and composed procedures for art built from lists of records
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
0Version history
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