0x1062
Joined 5 years ago
Joined 5 years ago
The 'main' section is HTML, so it can be any type of workspace you want. Our agent can read/write (with permissions, of course) and can execute code locally (again, with permissions).
The HTML pages we generate are backed by a schema and state per 'workspace', so they persist, can be shared between team members, and aren't just ephemeral read-only artifacts.
Our agent can do work on your machine for you, it has an integrated web browser that allows it to not only search and retrieve info but also perform web-based tasks, and it can package everything up into a nice little contained UI for you so you're not jumping between multiple apps / documents / tabs. That UI is tied back to whatever document / page you were working in -- so for instance our app can have a form that updates a web page, or updates a document on disk and vice versa.
The plainness is deliberate, the design of the workspaces is up to you -- it's your UI not mine and the agent will design everything how you like it. And as far as the sidebar/text input combination goes I can assure you I have spent a lot of time imagining what this UX should look like and frankly this combo just makes sense.
Also a note on the text input / agent. When you move from text conversations to dynamic HTML interfaces you're faced with a question: how do you relate 'conversations' with the agent to workspaces? A one-to-one conversation to workspace mapping? Many-to-one, one-to-many? Should conversations be time-based, where I just start a new one and have to provide context again and can optionally link back to old conversations if I want? This question is actually quite difficult, but my belief was that ultimately you want just one single global conversation with the agent, and you want to let it handle its own memory internally. We basically just treat memory like a codebase and let the agent decide what to do. This means when you type in the text input you can refer to anything you like: any workspace, any conversation, any webpage you're currently browsing, any folder on disk -- the agent gets the right context and can retrieve relevant details as it needs. And it works!
So sure, I'm not a designer no matter how hard I try -- there will be far better UX out there than I've designed. But I think the fundamental mechanism in Radix is more sophisticated than most other tools, including Cowork etc (no shade at all to anyone, I'm a massive fan of Claude Code).
The message stack in the bottom are the agent replies as it works. The idea is to move away from an array of messages as the primary interface with an agent and instead make the tools the primary interface. Whether that's actually helpful is an open question but it's certainly how I prefer to work now that I've been building with it.
I'm actually using Radix right now to brainstorm and update the example on the landing page to be more descriptive.
If it helps: the basic idea is that instead of an agent returning text or markdown we get it to return HTML. We then provide an app which makes working with that HTML actually useful (i.e. a sidebar to list the tools you've built, a way of commenting on the pages it generates).
The most trivial example I can think of is creating a simple colour picker. With Radix you can get an agent to add a colour picker that updates the code directly when you change its value (as explained further in [1]).
Also thank you for your feedback and taking the time to view the landing page at least!
[email protected]