32 comments

[ 3.5 ms ] story [ 42.0 ms ] thread
Been sharing progress on Cate here for a while. v1 is finally in a pretty solid state now: https://github.com/0-AI-UG/cate, https://cate.cero-ai.com

Cate is an open source desktop workspace built around an infinite canvas. Instead of constantly switching between terminals, editors, browser previews, docs, and AI tools, you arrange everything spatially in one place.

Big improvements since the earlier posts:

docking, tabs, and splits detachable native OS windows git worktree support unified Cmd+K search much smoother rendering/performance on larger canvases AI provider + MCP integration Stack: Electron, React, Monaco, xterm.js/node-pty, Zustand.

Runs on macOS, Windows, and Linux. MIT licensed.

Would love feedback from people with heavy multi-window or terminal-based workflows.

I'd love to get this as a self-hosted web service, so that I could access my infinite terminal canvas from any browser. It should of course held the sessions in the background even when I'm not connected.
> Been sharing progress on Cate here for a while

8 days is a while?

I checked because I’ve had a similar idea for several years and wanted to see the earlier discussion on your shared Cate progress.

There’s nothing. You linked it 8 days ago on a brand new account and it died.

Why use this instead of a native window manager? GNOME, KDE, Windows, MacOS, i3 all support virtual desktops where your window layouts are preserved
agree , it should be WM isntead of a very limited electron app.
I conceptually agree that managing windows should be the task of... the window manager, but at the same time it's easier and lower friction to both develop inside of an app and get some user to test new features
Because native virtual desktops still mostly preserve app windows, not project context. Cate is more scoped: one workspace per project/folder with terminals, browser previews, editors, notes, agents, worktrees, docked tabs/splits, and restored panel positions. It’s not meant to replace GNOME/KDE/macOS/i3 globally, more to keep the messy project-specific layer in one persistent place.
Window layout isn’t the key feature, creating a spatial map of open files and other resources is.
That’s a fair question but I can think of one big advantage of going this way and that’s to do with distraction-free workspaces.

To use a comparison, have you ever picked up your phone to enter an TOTP / one time auth code and then accidentally found yourself texting a friend, or some other non-work activity. It’s particularly easy to get distracted if you have an open notification you didn’t see until you went to use that one time code on your phone.

Having a desktop app for your workspace helps hide Slack and other distracting items while context switching between different productivity apps.

I really like the amount of exploration going on right now in this space. Even if this particular project (or the many terminal trackers/mergers/splitters, session managers, etc) don't end up being the thing, exploration is useful and might inform the next platforms.

The IDE has been "static" for most of the past ~20 years, with obvious improvements, but they were always incremental. The kind of exploration we see now is a bit more extreme, and I like it. It also seems like a lot of people are looking for alternatives, and I like some ideas. Even the funky ideas (I once saw a post comparing and proposing IDEs to follow RTS games UI) are interesting. Who knows what might stick.

(comment deleted)
Yeah, I agree. I think we are in an interesting phase where people are rethinking the “IDE as one fixed rectangle” model. Cate is one attempt at that from the spatial side: persistent canvases, terminals, browsers, notes, agents, docks, tabs, splits, worktrees etc. It may not be the final shape, but I think there is room for more experimentation around how long-running AI/dev workflows are organized.
Agreed. I'm actually excited to hope for a cambrian explosion of IDE experiments.

LLM powered visual diagramming of the code as you work? The ability to edit the diagrams and have tje LLM apply that back to the code? Visualisation of test coverage over the UI you are working on? Allowing you to attach user submitted videos of bugs directly to tests in the code?

I don't know if any of that is a good idea, but I really hope a bunch of people try.

Excellent post. Thank you.

I love looking through awesome-web-desktops. Most aren't infinite canvases but they are canvases, canvases of programs. There's fun stuff. UI paradigms being cooked up. I'll pitch in particular AetherOS, as being a neat web desktop that also is interestingly connected, networked, which is neat. https://github.com/syxanash/awesome-web-desktops https://bsky.app/profile/aetheros.computer

I do think we need to ask a little more "what next?". Taking Niri as a real desktop example, it's just so good, such simple but enjoyable new bones for a doing computing atop. So close to what was but so unique and nice. It intuitively connects me to the many many what ifs all around, makes me feel like there's such imminent possibility.

Especially today, who can make a UI that can be spoken well with, that is conversationally capable: that frontier feels barely explored. 9p is by far far far the most agentic desktop we have ever had, looked at this way. So beyond how it looks and works, how do computing surfaces express themselves?

To be honest, I still prefer a finite canvas; an infinite canvas doesn't align with most people's intuition.
That’s fair. Infinite canvas is not for everyone. I think the important part is that it does not have to mean “everything everywhere forever”. Cate also has docking, tabs, splits, project-based layouts, and search, so you can use it more structured if you want. But yes, for some people a finite or stricter workspace model will feel better.
Nice, but I'd love to see something more native. Maybe rust written for better performance without using any sort of GPU acceleration to keep the battery running longer on laptops. Even better if we can have a headless setup where you can connect from any computer without using VNC or what's so ever. Probably can also have collaborative sessions and have AI-assisted sessions with a 2nd cursor rendered like in the OpenAI examples weve seen lately.
I like the idea, my fear is however that the lack of structure will cognitively overload my brain and at some point every canvas will become a mess. Think about how to expire unused/old windows. Maybe let use set a limit so that at some point they are forced to remove old window when they want to open a new one.

I have a miro board as a notepad, I constantly add new stuff but at the same time its unmanageable.

Another example could be browser tabs, since there's no limit my current window holds approximately 60 open tabs which (which I dont use ofc) - this is the effect of chrome not having a native way to save stuff for later in a semantic way (you cannot search through bookmarks the same way you would search through google).

The success of this project will be defined by how well and easy users are able to retain the context (or content) of their canvas.

I appreciate the honesty of saying this is using electron.

I'm not sure what problem it actually solves or aims at solving other than being cool?

Visual orientation does matter in UX of the real world, video game worlds and to some degree operating systems, is this the goal?

I'm confused.

The homepage explicitly calls out that "Cate is not a window manager replacement" yet as far as I can tell pretty much all its features are window management. And the ones that aren't would be better off living in their own dedicated apps anyway (or aren't going to replace people's preferred editors or terminals).

The infinite canvas idea sounds cool, and I'm not aware of a window manager that lets you zoom and pan around a massive "desktop", but it really does sound like the cool bits would be better implemented as an actual window manager. Then we can keep using our favourite IDEs, terminals, editors, etc. etc which is where the actual friction for change sits, and have the cool infinite canvas/docking/arranging stuff on top.

Hmmmmm I liked the idea. But I think, I maybe expected more a windowmanager.
Cool project! I've been playing around with a couple of different implementations of an infinite canvas.

One of the reasons why I did not go with an HTML based approach is because the XY translation gets really laggy with a couple dozen items.

Is that something you thought about and accounted for?

> Cate is not a window manager replacement. Tiling/scrolling WMs (Hyprland, Niri, GlazeWM, KDE) are great if you mainly want to arrange OS windows. Cate is a spatial canvas around a single project's tools — closer to Figma's infinite canvas than to a WM.
This seems to be very similar to the (sadly abandoned) Haystack editor [1]. I was a bit surprised to find no mention of Haystack in the README or here in the comments. Maybe the idea of having a "canvas editor" and building it on VS Code is not that unique...

[1] https://github.com/haystackeditor/haystack-editor

I'll piggyback on something someone else here on HN commented (can't cite, sorry!): I can immediately recognize vibe coded projects by their visual design.

It's a weird skill but after seeing website, screenshot etc. I need only couple of seconds to make an opinion. I then look into history of project etc., though it rarely contradicts first impression.

I think I do this because I don't trust thus I don't want to use such projects. Not because vibe coded/vibe-code driven projects are inherently bad (they aren't). Because I think low self-investment translates to low ongoing self-interest.

Since all software is buggy to some degree, I'm certain I'll find a dealbreaker that will never be addressed, and risk is rarely worth it.

Spatial got me hooked, but then I saw the demo...

That's like the Antithesis of what I want to do and why I am on niri...

But to each their own I guess.

It looks great! I just wished my laptop screen was bigger, sounds better on a quite large monitor
I understand this is project-scoped and not intended to replace a window manager, but it just occurred to me that this concept could be a cool experiment for a Hyprland plugin. Instead of multiple workspaces, a single, infinite one that could be navigated by dragging and zooming in and out. I would probably hate to use that, but I supposed it would be a lot of fun to develop it.
(comment deleted)