Charis Tsevis
Visual designer living on the sunny side of the planet — building the tools I want to design with.
I am a visual designer, and almost everything here is a tool I needed and could not buy. Photographs into instrument imagery, maps into editable vector artwork, a crowded sheet of icons into a named and separated library, colour theory into something you can actually move a slider on.
They are mostly Python desktop applications: local-first, offline by default, no cloud endpoints, and built for a real production workflow rather than a demo. Several are named after the Greeks who got there first — Hipparchus, Heron, Diophantus — which is not a theme so much as a habit.
This GitLab account mirrors the public tools. A few projects live only on GitHub, which is where the full set is.
Computer vision and machine learning, from a designer's side of the desk
My interest in computer vision is a designer's interest: I want a machine to understand a picture well enough that I can restructure it. Not to classify it, not to caption it — to take it apart along the seams that actually matter and hand me the pieces.
That splits into two halves I keep using together.
Learned vision, run locally. Open-vocabulary detection and segmentation
(GroundingDINO, SAM 2.1, VitMatte) do the semantic layering in
Skiagrafia; a local vision-language model
(Qwen2.5-VL / Qwen3-VL, through either Ollama or llama.cpp) gives
Shapearator its semantic naming, so an
extracted icon lands as heart.png rather than icon_003.png; monocular depth,
subject matting, and SAM 3 region materials give Heron
the scene understanding its physics needs. The constant is that inference is
local and deterministic — model loaders are pinned to local_files_only, and an
engine that reaches for the network mid-render is neither offline nor reproducible.
Classical, geometric computer vision, which is still where most of the work happens: centroidal Voronoi cells, Delaunay meshes, hex grids and circle packing as derived map geometry in Hipparchus; shape detection, cropping and canvas normalization in Shapearator; and in Diastasis the overlap graphs and colouring search that separate tangled vector artwork into production plates — and can prove the layer count is minimal.
And underneath both, colour as a measurable thing: perceptual spaces (Oklab, CIELAB) for ramps that climb monotonically, and Metelli's equations for perceptual transparency in Garau Armonie.
The through-line is simple enough: I want tools that find the structure in a picture, not tools that summarize it.
Selected projects
HipparchusDesktop vector cartography. Live OpenStreetMap through Overpass, local.osm.pbf,
vector tiles, Natural Earth, Overture, terrain DEM and VIIRS night lights — out to
layered, editable SVG that opens clean in Illustrator. A shelf of cartographic
presets, plus derived Voronoi, Delaunay, hex-grid and circle-packing geometry.
|
HeronPhotographs re-synthesized as if captured by an instrument that sees past human vision — thermograph, fluoroscope, intensifier tube, NIR, Kirlian plate, schlieren bench, lumen chamber, spectroscope. Eight physically distinct engines on one pipeline. A physics simulation, not a gradient map. Artistic simulation — never a measurement or a diagnostic. |
Garau ArmonieA studio to teach Augusto Garau's colour theory and simulate his perceptual Colour Transparency, in memory of an unforgettable professor. One framework-agnostic TypeScript engine drives both a web studio and a Photoshop plugin, so a colour reads identically wherever you meet it.Live demo → |
SkiagrafiaSemantic vectorizing and masking. Local ML segments an image into objects and their parts, then writes both vector (SVG) and bitmap (TIFF/PNG) layers. 100% local inference, with a first-run wizard that fetches the weights so a fresh clone simply works. |
ShapearatorOne crowded sheet of shapes in, a tidy library out — each icon detected, cropped, normalized onto a shared canvas, and exported to PNG/JPG/TIFF/SVG with per-icon metadata. Ollama and llama.cpp are interchangeable first-class backends behind a single vision-client contract. |
DiophantineAn encryption and compression companion, named for Diophantus of Alexandria. The one thing here that has nothing to do with pictures. |
Also in the workshop
| Diastasis | Separates complex SVG artwork into production-ready layers — overlap-aware, area-exclusive, or one plate per ink colour for screen-print, vinyl and risograph. The minimum_layers search will tell you when a layer count is provably minimal. |
| MacWhisperer | A macOS GUI for OpenAI Whisper: local transcription and English translation, live recording, device controls, file workflows. |
| IllusionFun | Generates Kitaoka-style diagonal-bevel optical illusion patterns as SVG. |
| MacShapearator | Shapearator as a native macOS app, engine bundled — nothing to install. |
| Prosopon | Aligns portrait photographs onto a fixed 2048 face grid for mosaic work. |
| BridgeColorSorter | Sorts a folder of images by colour inside Adobe Bridge, by writing the order into the filenames — the one ordering Bridge respects. |
| gh2ghx | A small Grasshopper file converter. |
| crawl4ai-ui | A Streamlit front end for Crawl4AI — pages to clean Markdown, with link/image preview, screenshots and export. (GitHub only) |
Toolbox
Python · NumPy · SciPy · OpenCV · shapely · scikit-learn · PyTorch · Tkinter · skia-python · FastAPI · Streamlit
Swift · SwiftUI · Metal · Vision · Core Image
TypeScript · React · Vite · Adobe UXP
Local inference · Ollama · llama.cpp · SAM · GroundingDINO · Whisper
Output that matters · SVG · GeoTIFF · PMTiles · TIFF
Personal projects
View allAbout
Visual designer living on the sunny side of the planet.





