Lolly
Uygulamayı Başlat

TUI

The TUI (text user interface) is Lolly in your terminal. You browse tools, fill in inputs, save projects, edit your profile and export finished files, all from the keyboard and without opening a browser. It runs the same engine and the same render path as the web app and the CLI, so its files match theirs.

From a checkout:

pnpm run tui

With a standalone lolly binary, lolly tui and lolly-tui start the same thing. See Install for the two ways to get the command.

The TUI takes over the whole screen, like vim or htop, and restores your terminal when you quit. It needs a real interactive terminal (a TTY); with its output piped, it says so and stops.

First run: Start

LOLLY

Make it yours, from whatever you have.

Nothing here is a required step. Everything stays on this device.

  1. 1Make a QR codeA quick first win; no setup or existing file needed.
  2. 2One colourBuild a usable palette from the one thing you know.
  3. 3Bring a file.lolly, tokens, Penpot, a token zip, or SVG.
  4. 4Mix resourcesStart a system, then layer in logos, fonts and references.
  5. 5Explore tools firstSetup stays optional. Come back with 5 System.

↑↓ choose · Enter open · q quit

Every session: the tab bar

Lolly1 Tools2 Projects3 Profile4 Assets5 System

The number keys switch views, except while you are typing in a field or a search.

/search tools Enteropen the selected tool xexport, in the tool view Escgo back

The first time it runs, the TUI opens on Start. Every later session opens on Tools, with the five views on the number keys.

signed by Lollytui-start.htmlHTMLpixels, not shapes9 KBAI editedgenerated by Claude Opus 5.5Kendin kontrol etİmzalı dosyayı al

The first time it runs, the TUI opens on a Start screen with five choices: Make a QR code, One colour, Bring a file, Mix resources and Explore tools first. Pick one with its number or Enter. None of them is a required step, and once you have chosen, later runs open on Tools.

A first session

  • Find a tool. On Tools, press / and type part of its name.
  • Open the tool. Enter opens the tool view, with an Inputs panel beside an Export panel.
  • Fill it in. j and k move between inputs, and Enter or e edits one.
  • Choose the file. Tab switches to the Export panel, where you set the format, size and folder.
  • Export. x writes the file, to your Desktop by default. s saves the session to Projects.

Every view moves with hjkl or the arrow keys, opens with Enter and goes back with Esc.

The five views

Switch views with the number keys: 1 Tools, 2 Projects, 3 Profile, 4 Assets and 5 System. The layout follows the web app's, fitted to a terminal: a narrow terminal stacks the two-pane tool view into one column, as the web app does on a phone.

Tools (1) is a card grid of every tool, with search, favourites, sorting and category filters. You can also open a pasted lolly.tools link already configured, or import a PDF or .ai file from disk, which becomes a saved, fully editable Design session (IDML and Penpot import stay in the web app). The TUI hides only the tools that need a live device the headless browser cannot open, such as microphone and camera recording.

Projects (2) holds your saved sessions in nested folders. Create folders, move sessions into them, open and delete them, and batch them into one .zip.

Profile (3) edits the details tools fill in for you (bindToProfile): name, email, phone and company. It also holds Embed my details in exports, the opt-in that puts your name and contact details into an export's provenance, and Trust anchors, the PEM certificate files the Content Credentials report trusts. Two actions live here as well: back up and render everything, and check a file's Content Credentials on the device.

Assets (4) browses every asset. Favourite or hide one, or export it to any format through the asset-export tool.

System (5) is the terminal's design system: start from one colour, bring a token file or .lolly, add resources, export a .lolly and switch systems. Its token inspector shows one choice per theme group, the issues, a searchable token list and, for one token, its trace through the tokens it reads and the tokens that read it back. See Inspecting and reviewing design tokens.

Keys in each view
ViewKeyDoes
Tools/Search
ToolsEnterOpen the selected tool
ToolsuOpen a pasted lolly.tools link, already configured
ToolsiImport a PDF or .ai as a Design session
Toolsf / FFavourite a tool / show only favourites
Toolso / cCycle the sort / the category filter
Toolsp / rOpen Prepare for sharing / Rebrand
Projectsn / mNew folder / move a session into a folder
ProjectseExport a whole folder
ProjectsSpace, then bTick sessions, then batch the selection
ProjectscRun a CSV batch
ProfilebBack up and render everything
ProfilevCheck a file's Content Credentials
Assetsf / d / eFavourite / hide / export an asset
Systemc / i / aStart from one colour / bring a token file or .lolly / add resources
Systeme / uExport a .lolly / switch systems
SystemtInspect tokens: g picks a group, o steps its choice as a preview, Enter traces a token
Systems / yReview the previewed choices / store them on the active terminal system

The tool view

The tool view puts an Inputs panel beside an Export panel and a preview. Every input type the engine models is editable from the keyboard: text, numbers, booleans and selects; repeating blocks (drill into a block, its rows and its fields to add, delete, reorder and nest); file inputs, where you give a path and the bytes are read locally for on-device utilities such as strip-data; and asset inputs, with a catalog picker on Enter or a typed id such as lolly/logo/primary or a pasted lolly.tools tool link, resolved to an embedded render.

Keys in the tool view
KeyDoes
TabSwitch between the Inputs and Export panels
j / kMove between inputs
Enter / eEdit the selected input
SpaceToggle a boolean
← / →Cycle a select, or step a number slider
xExport
sSave the session
yPrint or copy a share link
u / rUndo / redo
pShow or hide the preview

The preview. For a design tool the preview is opt-in (p): the TUI rasterises the tool's SVG and draws it as a truecolor half-block image in the terminal cells, with no external image protocol. For a utility, where the output is the point, the preview is the main pane and appears by itself, even on a narrow terminal:

Prepare, Rebrand and import

Two more screens open from Tools. p opens Prepare for sharing, which inspects files for hidden data and personal values, lets you choose replacements and saves cleaned copies, all on the device (see Utilities). r opens Rebrand, which reads a .pptx or .pdf deck, shows the plan as a checklist where you keep, replace or remove each item, then compiles the result to a folder (see Rebrand a deck).

Export

The Export panel has Format · Width · Height · Unit · DPI · Filename · Folder · Design system · C2PA · Imprint · Durable · Password, with the output path worked out for you. Exports go to ~/Desktop by default, and the folder is editable per export.

C2PA and Imprint start on, as they do in the app and the CLI, and the same tool declarations turn them off: a tool that sets render.c2pa:false, and any on-device privacy utility, opens with both off and keeps them off. All three surfaces read one policy in the engine. Durable starts off, because it is a neural encode and a model download. Turn both C2PA and Imprint off for byte-reproducible output; what provenance costs has the measured cost of leaving them on, which applies here because the terminal exports through the same engine path.

What it can render

The TUI picks one of two tiers per format, and shares the CLI's renderer selection, so What the CLI can render is the full list:

Set the browser tier up once:

pnpm run install:browser   # downloads Chromium into .browsers at the repo root
                          # (an existing services/mcp/.browsers install, or PLAYWRIGHT_BROWSERS_PATH, is reused instead;
                          #  LOLLY_BROWSER_CHANNEL=chrome uses an installed Chrome and downloads nothing)
pnpm run build:web         # a built web shell for full-fidelity raster/pdf/video

Without Chromium or the built shell, those formats fail with a one-line message that gives the command to run, and the TUI falls back to writing HTML, so every tool still exports something. SVG and the data formats never need either.

URL Screenshot (url-shot) in the terminal

url-shot captures a live web page on the browser tier. It drives Chromium straight at the URL:

  • Formats: PNG / JPG (a real screenshot), PDF (a true vector print, with selectable text and crisp at any zoom) and SVG (the high-DPI shot in a scalable container).
  • Crop: trim in from each edge (top, right, bottom, left) as a 0–0.9 fraction.
  • Recolour: recolour the whole page before capture: invert, grayscale, sepia, a hue shift or a tint in a colour of your choice.
  • The scroll-depth, settle-delay and custom-CSS controls.

The crop and recolour controls are ordinary tool inputs, so you edit them from the keyboard like any other. The desktop app's capture also crops and recolours, and its vector capture produces a true vector SVG.

Batch

There is no #/batch grid in the terminal. Instead, three sources make one zip on your Desktop, optionally password-locked:

A batch shows no Design system row, so its files carry no design-system record, and neither does the Profile view's render-everything zip. Export one file from the tool view to record the design system with the file.

The Profile view's back up and render everything (b) writes two zips with a live progress panel: a portable data backup, and every saved project rendered out. Both land on your Desktop, or in your home directory if there is no Desktop folder.

Where your work is saved

Unlike the CLI, which saves no sessions, the TUI keeps saved sessions, project folders and your profile on disk. It uses the same directory as the desktop app and the CLI, chosen in this order:

  1. $LOLLY_STATE_DIR, when you set one.
  2. $LOLLY_TUI_DIR, the old name for the same thing. It still works, and prints a one-line note pointing you to LOLLY_STATE_DIR.
  3. The desktop app's own data directory, when the app is installed: ~/Library/Application Support/tools.lolly.Desktop on macOS, $XDG_DATA_HOME/tools.lolly.Desktop (or ~/.local/share/...) on Linux and %APPDATA%\tools.lolly.Desktop on Windows.
  4. ~/.lolly.

Saved projects live in saved-state/<slot>.json, in the record the desktop app writes, so a project you saved in the app is in the terminal's Projects list, and a project you save here opens in the app. Each record keeps both halves of its state: the tool's serialised URL state, which reopens through the same parser the web app and the CLI use, and the resolved input values, which is what a session saved in the app carries.

Projects the TUI saved before this layout sat in sessions/<slot>.json. They are copied into the shared layout the first time you open Projects, with their names and dates intact. The old files stay where they were, and a marker beside the new ones stops the copy running twice.

Project folders and your profile stay in terminal-only files beside them, folders.json and profile.json. The app keeps both in its browser database, so there is nothing on disk to share yet.

TUI or CLI?

The TUI is the CLI's host under an interactive transport. It reuses the CLI's implementation as is: the same headless DOM (jsdom), the same filesystem asset access and the same export path. The one difference is that the TUI owns the screen, so log output goes to an in-app buffer instead of stdout.

CLITUI
ShapeOne-shot commandInteractive full-screen app
Best forScripts, CI, pipelines, batch fan-outExploring tools, hand-tuning inputs, quick one-offs
Input--flag=value argumentsKeyboard, in place
Engine and outputSame engine, same bytesSame engine, same bytes
StateNo saved sessions; design systems on disk, shared with the TUISessions, folders, profile and design systems on disk (see Where your work is saved)

If you can express a job as a URL, prefer the CLI: it is reproducible and pipeable. Reach for the TUI when you want to see and adjust a tool the way you would in the web app, from a terminal.