Tidewave Web: in-browser coding agent for Rails and Phoenix
294 points
2 days ago
| 22 comments
| tidewave.ai
| HN
josevalim
2 days ago
[-]
Hi folks! Great to see our work on the front page, and I'm happy to answer questions.

Regarding next steps, we're currently working on React integration, with Python and JavaScript server-side web frameworks coming next. If you're interested, here's our survey/waiting list: https://forms.gle/8MeXwGjpBFDeGNQw9

reply
Lio
1 day ago
[-]
Thanks for this Jose, it looks great.

I only have one question and it's not a very important one; the name.

Why is it "tidewave" and not "tidalwave"? That just sounds wrong. (Told you it wasn't important :D )

EDIT: I think I might have answered my own question, there's another AI mortgage payment tool already called Tidalwave. I guess this saves confusion.

reply
josevalim
1 day ago
[-]
It was honestly a mistake from my side, as I am not a native speaker! But I was told to stick with it, since it has a gentler and unique meaning.
reply
Lio
1 day ago
[-]
No worries. I think it's what I'd call a "happy accident", I think it will work well. It actually makes searching online for it easier.
reply
ddon
2 days ago
[-]
Very cool, we use it as MCP server when we develop things using Claude Code... how would using Tidewave Web change our workflow?
reply
josevalim
2 days ago
[-]
You can think of Tidewave MCP as integrating the agent with the language runtime, while Tidewave Web integrates the agent with your actual app and its interface. It knows your views and templates, it can correlate it with the rendered page, and then automate the browser to implement and validate features.

Our announcement post goes more into detail and explains why moving the agent to the browser means you (the developer) can spend more time out of the loop: https://tidewave.ai/blog/tidewave-web-phoenix-rails

reply
joshmlewis
2 days ago
[-]
As someone who builds AI products and having used agentic coding tools since they came out (often with Rails projects), I don't get this. There was a similar project called Rails MCP Server which said:

> "This Rails MCP Server implements the MCP specification to give AI models access to Rails projects for code analysis, exploration, and assistance."

And again I don't get the value. I can see some slight benefits to having a tight browser integration but I don't think that's worth leaving the IDE / CLI tools and the workflows they bring. You can also use Playwright MCP or just screenshot easily for more context. Claude Code can now run your server in the background and view logs as well. In a perfect world where LLM's can one shot whole features, maybe. But I can't let Claude Code go 10 minutes without it introducing a bad pattern and having to stop it. Reducing that visibility even further with this does not seem like a good combo.

I'm not wanting to tear down others projects either, just giving my perspective. I should try it to see how it does in the wild but the Copilot license or Anthropic API key requirement also deters me as well as having to have a project specific dependency.

reply
josevalim
2 days ago
[-]
As you said, the best would be for you to give it a try and see the benefits in practice (if any). Beyond that, I can add to two points you brought up:

First, Playwright MCP is really not enough. For example, imagine you are building a project management software and you are working on a feature for transferring tasks between projects. Testing this feature requires at least a user who is admin and at least two projects. When it is time for Playwright to test this feature, you need to automate the account creation, then it has to set up two projects, add the task, etc, and it often gets stuck.

When you are using Tidewave, you naturally do this setup as part of your development, which Tidewave has direct access to during tests. So it just interacts with the same page. Furthermore, if you see any bugs or places you could improve, you can't really tell Playwright or regular coding agent to fix them, you have to translate what you want. With Tidewave you just point and click and it works across browsers. I talk more about this in the announcement post: https://tidewave.ai/blog/tidewave-web-phoenix-rails

Other than that, I am really curious about the handoff between Tidewave and the editor that you mentioned. At some point, you will need the editor indeed, but how to best do this transaction? Should you be able to review and do tiny tweaks within Tidewave first? Regardless, moving the agent to the browser for web applications bring enough benefits to justify going one lever higher. :)

reply
yed
2 days ago
[-]
Playwright MCP has a mode where it can run as a Chrome Extension, which allows you to use it on your active browser session. Not sure if you can do point and click to communicate but it covers the development setup and login bit.
reply
taatparya
2 days ago
[-]
Does it include support for Ash framework?
reply
josevalim
2 days ago
[-]
It should just work. Ping me if you run into any issues!
reply
canadiantim
2 days ago
[-]
Could it work with Django?
reply
josevalim
1 day ago
[-]
It is in our roadmap!
reply
canadiantim
1 day ago
[-]
Awesome, looking forward to it! Thanks for all the great work on everything you've been doing, godspeed!
reply
troupo
1 day ago
[-]
It just worked for me.

You may want to point it to an Agents.md with usage rules synced: https://hexdocs.pm/usage_rules/readme.html

reply
pelagicAustral
2 days ago
[-]
I've been using it for a few hours and I find that it struggles at times with some of the instructions, it completely obliterated a modal and overall I didn't felt like I trusted it too much with larger tasks, but then I started working with Claude Code on a console, and Tidewave on my browser and the workflow is pleasing, I only give UI portions of work to Tidewave and it works well, it's nice to be able to select elements and pass instructions for refactoring UI... this is only from like 2 or 3 hours of testing...
reply
troupo
1 day ago
[-]
On top of what Jose Valim said:

I ran this yesterday. Since it's running inside your app and has access to everything your app does, here's what it did for me:

I have an app that processes images and displays certain info on them. The images are processed asynchronously.

I needed a pubsub when info was inserted into the DB to be sent out, and info on the page to appear immediately.

Since Tidewave is running inside the app, it did the following:

- opened the info page

- triggered dummy data insert into the DB

Edit: I mean it inserted data using the exposed module functions that would trigger the pubsub [1], it did not add data to DB directly

- monitored both the app logs and the page to see what's happening

- made several iterations adding pubsub, subscribing to it, and fixing page display

I didn't need to make screenshots because Tidewave was looking at the page already.

I didn't need to paste screenshots anywhere and rely on that model's OCR to figure out what's going on.

I didn't have to copy-paste logs.

and so on

[1] https://hexdocs.pm/ash/Ash.Notifier.PubSub.html

reply
kawsper
2 days ago
[-]
I spent a couple of hours last night testing it out.

The login process didn't work well, but it's due to my browser having a seperate container for Github.

I asked it to add a feature using Stimulus.js to my very simple gallery page written in Rails, when you hover over an image in the gallery, it should make an icon appear, and when clicking the icon, a modal should pop-up that allows the user to do cropping.

It picked up on my database models and it produced a very good result, however, it seemed to have issues verifying its solution, it particularly seemed to struggle with "on-hover".

The solution it produced was a lot better than what claude-code produced, and I liked the interface.

I also ended up hitting the limits on the Anthropic API, and it wasn't obvious to me what I should do in that case, but that's likely not the fault of Tidewave, and the Context Window Usage having a maximum of 200.0k also seemed very high, but that probably contributed to me hitting a limit.

reply
josevalim
2 days ago
[-]
Thank you `kawsper` for the feedback!

We are going to introduce more visibility into the context limit and make it easier to summarize.

Regarding the on-hover, do you still have the snippets around that it tried? We instruct the model to dispatch events using the proper browser APIs and I wonder what it tried to do. I would love to hear more! You can ping me on Tidewave's Discord (https://discord.gg/5GhK7E54yA) or send me an email (see github.com/josevalim).

reply
elepedus
2 days ago
[-]
I'm super-conflicted about this.

I've been loving Tidewave MCP since the day it launched and I wish I had that for all my work. I also fight the pain of driving web browsers through the playwright MCP every day, and while it's a huge help, it's also massively slow and kills my context window.

I want these problems solved. But I want them solved in a way that isn't unique to one stack, because I don't have the luxury of sticking to my preferred Elixir stack all the time. I also want them solved in a way that doesn't force me to take a huge backward step in my AI usage by bypassing my all-you-can-eat Max subscription.

The $10 subscription isn't that expensive, but then again, since this isn't a complete solution, it's going to be on top of other subs like Cursor/Max/Phoenix.new etc etc and it becomes death by a thousand cuts.

Maybe I just need to calm down a bit and not look at it as all-or-nothing.

Like, sure, switching to this full-time would be impossible. But maybe as a tool in my toolbox, where I pay $10 and use it once-in-a-while, when I have a tricky thing to do and it's worth me burning $10-20 on API tokens just to unblock me.

I'm just concerned that software development is fast becoming pay-to-play / pay-to-win, and that can quickly lead to chickenization, where prices are carefully titrated to shift most of the value to the tool providers.

We've seen this play out in infrastructure and tooling, and most orgs now "donate" a huge chunk of their profit margins to AWS.

reply
rglover
2 days ago
[-]
> I'm just concerned that software development is fast becoming pay-to-play / pay-to-win

The people did it to themselves.

Instead of investing time learning these things, people (like always) want to take a shortcut. Big co's are more than willing to take advantage of that laziness and will indefinitely into the future—whether diet pills, AI, or a brain chip that occasionally makes you drool but is 100x more accurate with directions than Google Maps.

reply
josevalim
2 days ago
[-]
I hear you. I'd love to integrate with whatever model subscription is available but it seems using Max outside of Claude products is against their terms. I suggest reaching out to Anthropic and letting them know you would like to use your Max subscription with other coding agents.
reply
TomBers
1 day ago
[-]
I have been using Tidewave since it released, and use it for a relatively complex Phoenix app (https://github.com/TomBers/dialectic).

The ability to have access to the context of the code, run tests and edit the code in place, are capabilities I could not even dream about when I started coding.

How Jose manages to see the potential of a technology (Erlang, LLM's) and produce something so elegant and useful is amazing. It has certainly changed my life.

reply
itsthecourier
2 days ago
[-]
Look, competing against Claude Code will be hard.

yet this is Jose Valim we are talking about. creator of Elixir, Plug, contributor in Phoenix and Rails

Guy is a machine https://github.com/josevalim

I believe he will deliver, will check it time to time, interesting approach

reply
owebmaster
2 days ago
[-]
> Guy is a machine https://github.com/josevalim

Indeed. He is a big inspiration for Brazilian nerds.

reply
awongh
2 days ago
[-]
The details on what the architecture of this aren't clear, but I can see that the big feature is deeper integration into the browser.

To me this is an obvious direction for all coding agents to go in. Right now the cursor chrome browser MCP server doesn't work very well, but it's very obvious to me that this is the direction things need to go in.

I'm not sure why focusing on a framework would fundamentally make this any better than the generic approach to getting good context directly from the browser.

reply
josevalim
2 days ago
[-]
There are two main reasons why being framework specific can be a big boost:

1. We annotate and understand your template language. So when you select an element, we not only know its tag and attributes, but we also know which template file rendered it. The more structured the template language is (JSX, HEEx, etc), the better job we can do, which means LLMs don't have to guess.

2. We also run code within the web framework. This means database access, built-in documentation using the exact versions in your project, access to language and framework reflection/introspection APIs, etc. So the agents have more, err, agency.

I hope this clarifies it a bit!

reply
towhans
2 days ago
[-]
When using browser-tools-mcp I can point to an element and ask Agent to "change color of this element to red". It would copy the part of the HTML and search the codebase for it.

I can imagine having an in browser, framework level tool would know exactly which controller and which template generated this element and could target it more precisely while using less tool calls and less tokens. I haven't tested it yet but that is my expectation.

reply
bluehatbrit
2 days ago
[-]
I've been using the tidewave plugin for a bit now, this browser addition seems pretty cool. I'm curious about the pricing though. It says we need to provide our own github copilot or anthropic keys, but there's then a limit on the number on usage before you need to pay.

Is this because data is going through a tidewave server or something, or is it just a way to create a bit of a free trial vs "now you need to pay us"?

reply
josevalim
2 days ago
[-]
It is both. There is a Tidewave server (which will play a more meaningful role once we introduce agent coordination) but we also hope the limit will be enough for people to see value in the tool and convert into paying users (so we can continue improving it).
reply
preciz
2 days ago
[-]
I just tried it first time. I was happy when I saw it integrates with GitHub Copilot subscription and then I went ahead with Claude Sonnet 3.7 (from the GitHub Copilot provided models) and made some cool changes to our app.

So far very good.

reply
systemz
2 days ago
[-]
Looks cool, I'll wait for some sort of local LLM support eg ollama before buying it
reply
machiaweliczny
1 day ago
[-]
It would be great to have ability to customize it for other frameworks and languages in the client/server way and headless if possible. Then it can be a part of bigger platforms.
reply
abrookewood
2 days ago
[-]
Hey Jose, How does this differ from Phoenix.new?
reply
josevalim
2 days ago
[-]
Phoenix.new is about remote agents, while Tidewave integrates with your app running on your machine!
reply
kiru_io
2 days ago
[-]
Why does it forward to https://tidewave.ai/ when I type http://localhost:4000/tidewave ?
reply
josevalim
2 days ago
[-]
You are first redirected for authentication purposes. Once authenticated, it redirects back to your app.
reply
abrookewood
2 days ago
[-]
Cool. That's actually interesting. I found with Phoenix.new that I would start there, but later ended up running everything locally - with the Tidewave MCP server of course!
reply
robertkoss
2 days ago
[-]
I would love to have a React Copilot that has access to the console, network logs, the actual html elements, computed styling etc. + my code.

This would be such a game-changer. I am also convinced that monorepos will become the de facto standard, since it is way easier for LLMs to navigate / implement features across the whole stack.

reply
ethan_smith
1 day ago
[-]
Looks like you're in luck - in comment #16, Jose Valim mentioned they're currently working on React integration as their next priority.
reply
josevalim
2 days ago
[-]
We are working on React integration, first within Rails and Phoenix, but then also standalone. How are you serving/running your React apps in development?
reply
machiaweliczny
2 days ago
[-]
Most people use Vite these days or Nextjs
reply
robertkoss
2 days ago
[-]
great to hear, vite.
reply
enraged_camel
2 days ago
[-]
Hard for my team to get excited about this, because we haven't been able to use Tidewave at all, as neither it nor the Rust-based proxy support local HTTPS (which we need for our integrations with several third-party services, e.g. oauth providers).
reply
josevalim
2 days ago
[-]
Can you ping me on Tidewave's Discord or send me an email (you can find on github.com/josevalim)? We did test it on https recently and it worked fine, so there is something more going on. I'd be glad to see this ironed out!
reply
neoecos
1 day ago
[-]
How do you feel, competing with Phoenix.new ( Chris) ?
reply
olivermuty
1 day ago
[-]
This tool is for working with established codebases and phoenix.new is more about bootstrapping (for now), so they are not overlapping at all imo.
reply
pelagicAustral
2 days ago
[-]
This looks promising. I will definitely be giving it a shot. I have been getting pretty good results with Claude Code and Rails for a while now, I'm kind of excited to see how much things can improve with this.
reply
prophesi
2 days ago
[-]
Is it safe to say that the Tidewave MCP server will remain FOSS, but anything Tidewave Web related (localhost:4000/tidewave) will be proprietary yet optional?
reply
josevalim
2 days ago
[-]
Yes!
reply
thrown-0825
2 days ago
[-]
I think opinionated frameworks like this are a good fit for ai.

Usually only one correct and idiomatic way to do things, and rails in particular really leans on convention over configuration.

reply
yanis_t
2 days ago
[-]
Opinionated frameworks, strict types, and whatever non-ai tools for correctness validations (typescript, linters, compilers) are all helpful.
reply
cdiamand
2 days ago
[-]
Looks pretty neat, and certainly addresses a missing element in the current AI workflow.

Question: What happens to our data - i.e. the code and context sent to your service?

reply
josevalim
2 days ago
[-]
We log basic request metadata (timestamps, model used, token counts). Prompts and messages are not logged unless you explicitly opt-in. We don't store tool results. Note the underlying model provider you use may store data separately depending on your user agreement with them.
reply
obiefernandez
2 days ago
[-]
Nonstarter if can’t use it with Max plan
reply
benzible
1 day ago
[-]
Jose commented on that that elsewhere:

> I'd love to integrate with whatever model subscription is available but it seems using Max outside of Claude products is against their terms. I suggest reaching out to Anthropic and letting them know you would like to use your Max subscription with other coding agents.

reply
EDM115
2 days ago
[-]
Tidle >>>

<<<< Wave

reply
arisman
2 days ago
[-]
Hack
reply