DEV Community

Cover image for PenEcho puts the AI on a canvas and runs it off your CLI login
Reno Lu
Reno Lu

Posted on

PenEcho puts the AI on a canvas and runs it off your CLI login

PenEcho makes a bet that the chat box is the wrong shape for thinking. Its interface is a 20,000 by 20,000 canvas where you write by hand, sketch a diagram, or drop half an equation, pause, and get an answer placed next to your marks. The model reads not only what you wrote but where you wrote it, because spatial relationships are part of the input.

Anyone who has tried to work through a derivation in a chat window knows the tax being removed here. You either translate every step into prose, or you rebuild the picture in a rigid diagram tool. PenEcho's claim is that the marks themselves are enough of a prompt.

The canvas is the interaction model

Answers, hints, explanations, continuations, formulas, plots, and diagrams all land on the canvas rather than in a transcript. Drafts the model returns behave like objects: you drag them, resize them by group or by axis, copy the text or the formula out, and then accept or discard them before they become part of your work. A freehand lasso selects what you want to hand over.

That accept-or-discard step is the detail I would point at. Output that arrives as a suggestion sitting beside your work, rather than as a message in a thread you now have to reconcile, keeps the document yours. Input is stylus or mouse, and you pan and zoom across a canvas sparse enough that "somewhere else on the page" is a real option.

No API key for the CLI paths

PenEcho can drive three kinds of model source: an authenticated Claude Code CLI, an authenticated Codex CLI, or a direct API endpoint in either OpenAI-compatible or Anthropic-compatible format. The CLI paths are the notable ones: PenEcho uses the selected CLI locally and needs no API key of its own for that source. What that costs you then depends on how the CLI account itself is billed.

The integration is careful rather than shallow. Canvas requests through Codex use codex exec --json, and PenEcho returns as soon as Codex emits its final message and turn.completed, terminating any lingering process in the background instead of making you wait for it. Claude requests run as one isolated claude -p turn with tools, agents, MCP, prompt suggestions, and session persistence disabled, and any attempted tool use aborts the request. For a canvas that should answer a question and nothing else, disabling the agent machinery is the correct call.

Reasoning effort is exposed where you actually want it. A toolbar menu next to Auto AI switches per request between the configured value, none, low, medium, high, and the provider's highest practical level, which maps to xhigh for Codex and the OpenAI API and to max for Claude. Selecting none disables thinking. Support stays provider-dependent, and an endpoint can reject a level its model does not implement. The configured default initializes the control, and a toolbar change overrides it for later requests without rewriting the config file, so a cheap sketch and an expensive derivation do not have to share a setting.

Setup is npm install -g penecho, then penecho configure, then penecho, with Node 20.3 or newer, or a desktop build from the releases page. Every LLM configuration page ends with Test and Save, and PenEcho saves before it checks, so a failed verification never loses what you entered. The Codex check is offline: it verifies the executable and login and reads the bundled model catalog rather than spending tokens on a test request.

Read the credential note before you deploy it

Configuration lives at ~/.penecho/config.env. API credentials are stored there in plaintext, with owner-only permissions on POSIX systems, and the project states they are never sent to browser code. That is an honest disclosure and also a constraint: on a shared or multi-user machine, that file deserves the same handling as any other secret, and a per-launch --config file is available when a particular session should not use the global one.

The project is AGPL-3.0 and is a member of Moonshot AI's Kimi Open Source Friends program, with API credits behind its development and Kimi K3 listed among the recommended models for demanding canvas work alongside newer Claude and Codex models. The configuration notes are specific about this: Opus 4.8 or newer is recommended for the Claude CLI, with Sonnet and Opus 4.6 able to respond but weaker on canvas work, and the Codex path wants GPT-5.5 or newer. That is a useful expectation to set for a tool whose whole job is reading your handwriting correctly.


GitHub: https://github.com/penecho/penecho


Curated by Agent Palisade — practical AI for small and mid-sized businesses.

Top comments (0)