I had it build the game, opting for a single room at first to see if that worked.
Then I had it add multiple rooms on a different git branch in case that didn't work. It worked great.
I learned very little about elixir, phoenix, or deploying to fly.io up to this point, and I already have a nice looking app deployed and running.
I know a lot of devs will hate that this is possible, and it is up to me now to look at the steps it took to create this and really understand what is happening, which are broken down extremely simply for me...
I will do this because I want to learn. I bet a lot of people won't bother to do that. But those people never would have had apps in the first place and now they can. If they are creating fun experiences and not banking apps, I think that is still great.
You guys have been releasing amazing things for years only to be poorly replicated in other languages years later.. but you really outdid yourselves here.
I'm blown away.
edit: is there a way to see how much of my credits were used by building this?
This is amazing on multiple fronts! I reset your usage, so the next round is on us! We shipped credits the day before launch, so usage UI is still TBD, but should be out next week. Thanks for the sharing your experience!
Phoenix creator here. I'm happy to answer any questions about this! Also worth noting that phoenix.new is a global Elixir cluster that spans the planet. If you sign up in Australia, you get an IDE and agent placed in Sydney.
Just a clarifying question since I'm confused by the branding use of "Phoenix.new" (since I associate "Phoenix" as a web framework for Elixir apps but this seems to be a lot more than that).
- Is "Phoenix.new" an IDE?
- Is "Phoenix.new" ... AI to help you create an app using the Phoenix web framework for Elixir?
- Does "Phoenix.new" require the app to be hosted/deployed on Fly.io? If that's the case, maybe a naming like "phoenix.flyio.new" would be better and extensible for any type of service Fly.io helps in deployment - Phoenix/Elixir being one)
- Is it all 3 above?
And how does this compare to Tidewave.ai (created as presumably you know, by Elixir creator)
Apologies if I'm possibility conflating topics here.
The Phoenix.new environment includes a headless Chrome browser that our agent knows how to drive. Prompt it to add a front-end feature to your application, and it won’t just sketch the code out and make sure it compiles and lints. It’ll pull the app up itself and poke at the UI, simultaneously looking at the page content, JavaScript state, and server-side logs.
Is it possible to get that headless Chrome browser + agent working locally? With something like Cursor?
I know it's early days, but here's a must-have wish list for me:
- ability to run locally somehow. I have my own IDE, tools etc. Browser IDEs are definitely not something I use willingly.
- ability to get all code, and deploy it myself, anywhere
---
Edit: forgot to add. I like that every video in Elixir/Phoenix space is the spiritual successor to "15-minute rails blog" from 20 year ago. No marketing bullshit, just people actually using the stuff they build.
Include optional default email, auth, analytics, job management (you know… the one everyone uses ::cough:: Oban ::cough::), dev/staging/prod modes (with “deployment” or something akin to CD… I know it’s already in the cloud, but you know what I mean) and some kind of non-ephemeral disk storage, maybe even domain management… and this will slay. Base44 just got bought for $80M for supplying all those, but nothing is as cool as Elixir of course!
These other details that are not “just coding” are always the biggest actual impediments to “showing your work”. Thanks for making this!! Somehow I am only just discovering it (toddler kid robbing my “learning tech by osmosis” time… a phenomenon I believe you are also currently familiar with, lol)
Hi just to confirm as I cannot find anything related to security or your use of using submitted code for training purposes. Where is your security policies with regards to that.
Is there a transparent way to see credit used/remaining/topped up, and do you have any tips for how you can prompt the agent that might offer more effective use of credits?
The LLM chat taps out but I can't find a remaining balance on the fly.io dashboard to gauge how I'm using it. I _can_ see a total value of purchased top ups, but I'm not clear how much credit was included in the subscription.
It's very addictive (because it is awesome!) but I've topped up a couple of times now on a small project. The amount of work I can get out the agent per top-up does seem to be diminishing quite quickly, presumably as the context size increases.
Is there something comparable that works similarly but completely offline with appropriate hardware? Not everywhere has internet or trusts remote execution and data storage.
PS: Why can't I get IEx to have working command-line history and editing? ;-P
Any takeaways on using Fly APIs for provisioning isolated environments? I'm looking into doing something similar to Phoenix.new but for a low-code server-less workflow system.
1. What's your approach to accessibility? Do you test accessibility of the phoenix.new UI? Considering that many people effectively use Phoenix to write front-ends, have you conducted any evals on how accessible those frontends come out?
2. How do you handle 3rd party libraries? Can the agent access library docs somehow? Considering that Elixir is less popular than more mainstream languages, and hence has less training data available, this seems like an important problem to solve.
Watched the Tetris demo of this and it was very impressive. I was particularly surprised how well it seems to work with the brand-new scopes, despite the obvious lack of much prior art. How did you get around this, how much work was the prompt, and are you comfortable sharing it?
Just tried it out, but it's unclear what the different buttons at the bottom of the chat history does. The rightmost one (cloud with an upwards arrow) seems to do the same as the first?
Do you have a package for calling LLM services we can use? This service is neat, but I don't need another LLM IDE built in Elixir but I COULD really use a way to call LLMs from Elixir.
This is very cool. I think the primary innovation here is twofold:
1. Remote agent - it's a containerized environment where the agent can run loose and do whatever - it doesn't need approval for user tasks because it's in an isolated environment (though it could still accidentally do destructive actions like edit git history). I think this alone is a separate service that needs to be productionized. When I run claude code in my terminal, automatically spin up the agent in an isolated environment (locally or remotely) and have it go wild. Easy to run things in parallel
2. Deep integration with fly. Everyone will be trying to embed AI deep into their product. Instead of having to talk to chatgpt and copy paste output, I should be able to directly interact with whatever product I'm using and interact with my data in the product using tools. In this case, it's deploying my web app
look into Kasm workspaces.. great way to spin up remote docker-based linux desktops, and works great as an AI dev environment that you can use wherever you happen to be. There is homedir persistence, and package persistence can be achieved via some extra configuration that allows for Brew homedir-based package persistence.
I have recently been working with Google Jules and it has a similar approach. It spins up VMs and goes through tasks given.
It does not handle any infrastructure, so no hosting. It allows me to set multiple small tasks, come back and check, confirm and move forward to see a new branch on GitHub. I open a PR, do my checks (locally if I need to) and merge.
I worked all day on a Phoenix app we’re developing for ag irrigation analysis. Of late, my “let’s see what $20/mo gets you” is Zed with its genetic offerings.
It actually writes very little Elixir code for me. Sometimes, I let it have a go, but mostly I end up rewriting that stuff. Elixir is fun, and using the programming model as intended is enlightening.
What I do direct it to write a lot is a huge amount of the HEEX stuff for me. With an eventual pass over and clean it up for me. I have not memorized all of the nuances of CSS and html. I do not want to. And writing it has got to be the worst syntactic experience in the history of programming. It’s like someone said people lisp was cool; rather than just gobs of nested parentheses, let’s double, nay triple, no quadruple down on that. We’ll bracket all our statements/elements with a PAIR of hard to type characters, and for funsies, we’ll make them out different words in there. And then when it came to years of how to express lists of things, it’s like someone said “gimme a little bit of ini, case insensitivity, etc”. And every year, we’ll publish new spec of new stuff that preserves the old while adding the new. I digress…
I view agentic coding as an indictment on how bad programming has gotten. I’m not saying there wouldn’t be value, but a huge amount of the appeal, is that web tech is like legalese filled with what are probably hidden bugs that are swallowed by browsers in a variety of u predictable ways. What a surprise that we’ve given up and decided the key tools do the probabilistic right thing. It’s not like we had a better chance of being any more correctly precise on our own anyway.
Ah man I'm really happy to see this and excited to try it out.
As an Elixir enthusiast I've been worried that Elixir would fall behind because the LLMs don't write it as well as they write bigger languages like Python/JS. So I'm really glad to see such active effort to rectify this problem.
This last few weeks I've been going hard on LLMs to put together a new prototype project. I've exclusively been using Claude Sonnet 3.7 within Zed (via github copilot) and it' fantastic.
From time to time it tries to do something a little old-school, but nothing significant really. It's very capable at spitting out entire new features, even in liveview.
Over all the experience has very productive, and at least on-par with my recent work on similar sized python and nextjs applications.
I think because I'm using mostly common and well understood packages it has a big leg up. I also made sure to initialise the phoenix project myself to start with so it didn't try to go off on some weird direction.
Worried it might fall behind… further? I love LiveView, Phoenix, Elixir, OTP. But the ecosystem is a wasteland of abandoned packages.
If Phoenix.new helps solve that problem, I’m all for the effort. But otherwise, the sole focus of the community leaders of Elixir should be squarely and exactly focused on creating the incentives and dynamics to grow the base.
Compare, for example, Mastra in TypeScript or PydanticAI in Python. Elixir? Nothing.
Not here to bash. It’s more just a disappointment because otherwise I think nothing comes close.
Yeah – as someone who works in Common Lisp, I wish there was way to do complementary training for LLMs with existing corpora of codebases. Being able to read access documentation doesn't do much, unfortunately, to help with more general issues with correctness of output.
Same, I watched a video from Theo where he says Next.js and Python will be the best languages because LLMs know them well, but if the model can infer, it shouldn’t be a problem.
Burnt through some credits pretty quickly. The first few minutes of using it felt like a glimpse of what it was supposed to be like, but otherwise it spent a lot of time not getting basic things right with the UI and before I knew it I was done. Roughly 90 minutes for $20 it's not a good value when you can ostensibly have the same experience on your computer and have control over every aspect. I still can't clone the latest revised version of the codebase it created to my local computer. Between that and Fly's non-existent documentation, no usage meter of some kind, and the lack of unpaid support (even though I am paying to use the service?) makes me want to avoid Fly, which is unfortunate because I think it does a lot of things right, especially the tunneling and dev experience outside of phoenix.new.
I've wasted a lot of time and energy on stuff that doesn't matter, so I can hardly judge anyone else on what they focus on, but man does it feel bad to have community leaders actively focus on building out tooling that is anti-worker. I think the only way I'd feel more conflicted is if Fly.io started building weapons systems for the military. I guess that wouldn't be shocking considering some of their lead's beliefs.
It's safe to say that if either Chris or I believed this to be anti worker, we wouldn't be working on it. He's spent the last 10+ years working on Phoenix specifically to improve the lives of the people doing the work.
My experience with software development is maybe different than yours. There's a massive amount of not-yet-built software that can improve peoples' lives, even in teeny tiny ways. Like 99.999% of what should exist, doesn't.
Building things faster with LLMs makes me more capable. It (so far) has not taken work away from the people I work with. It has made them more capable. We can all build better tools, and faster than we did 12 months ago.
Automation is disruptive to peoples' lives. I get that. It decreases the value of some hard earned skills. Developer automation, in my life at least, has also increased the value of other peoples' skills. I don't believe it's anti worker to build more tools for builders.
You can think of it as just automating the boring tedious stuff so us humans can focus on the harder problems like strategy, direction, design, GTM, etc.
The days are numbered where humans are sitting typing out code themselves.
It's akin to the numbered days of type writer secretaries of the 20th century.
Most tech isn't "Anti worker". What determines pro/anti worker are laws and government policies that reciprocate with the cultural norms we adopt. At the moment, money in U.S. politics is the most anti-worker phenomena I can think of. The ultra wealthy have a monopoly on the incentives that create policy and how our lives are ordered. The only power working people seem to have is the ability to impose consequences via rogue guerilla acts of protest and violence (Luigi Mangion) . Hopefully, AI is a Frankenstein monster the public learns to wield to facilitate more of these "consequences" and upend the monopoly the super wealthy have on policy incentives and change the way politics is funded for good. It's a new world and a Hawaiian or New Zealand doomsday bunker isn't going make a difference.
Do you believe making things easier and more accessible is bad for workers? I don't think it inherently is or isn't, it just depends on who benefits from the increased efficiency. I think that's more of a problem with your economic system, or wealth distribution.
Overall I think we would all be happier if efficient machines take away the drudgery of our daily work and allow us to focus on things that really matter to us. . . as long as our basic needs are met.
This is very neat, and right up my alley as both someone really into Elixir and who thinks agentic AI is the future.
I have a question about how you manage context, and what model you use. Gemini seems the best at working with give context windows right now, but even that has its limitations. Thinking about working with Claude Code, a fair bit of my strategizing is in breaking down work and managing project state to keep context size manageable.
I'm watching the linked video and it's amazing seeing it in action, but I'm imagining continuing to work on a project and wondering if it will start losing its way so to speak. Can you have it summarize stuff, and can you start a session clean with those summaries, and have it "forget" files it won't need to use for this next feature, etc?
"Sign in with fly.io" takes me to a page asking me to pay $20 but the plan details are vague - what exactly is included in "$20/mo of Built-In AI Assistance
Builds, refactors, and debugs right in your IDE"?
This is a situation where we've been pushing on Chris to get this out into the world quickly, and there's a lot of packaging stuff like this that isn't fully put together yet. Thanks for calling it out! We'll get to it over the next week.
I'm a little surprised by the sentiment here that LLMs don't do well with Elixir. I've had a pretty good experience using AI tools on Phoenix/Elixir side projects.
LLMs are definitely a lot better at Elixir than they used to be - the gap has closed somewhat. I still perceive a gap though, especially when trying to do more complicated things in Phoenix and LiveView (as opposed to just raw Elixir.)
Which LLMs do you use that you find are best with Elixir/Phoenix?
I've only used LLMs with Elixir, so I don't have any other experience for comparison, but I've found that although Claude frequently employs the wrong approaches in Elixir, I usually know when he'll have trouble and just ask him to read pertinent documentation first. So long as he's read the manual he seems to do just fine.
it's wild to me all this progress with AI, but at the same time, on my brand new mac, going through the readme to try out phoenix, it can't even get past the first step without an error (says it can't find postgres), yet the docs say I don't need postgres and it will default to sqllite if postgres and mysql can't be found.
hard to put confidence in AI vibe hacks when the basic stuff just doesn't work.
* (Mix) The database for Myapp.Repo couldn't be created: killed
I am probably doing something wrong but I hate agents for coding. I like the autocomplete and the prompt to generate snippets but when it starts modifying code in many files so fast all at once, tries a bunch of stuff and never know when to stop it pisses me off more than anything else. Because most the time if it had stopped and let me do the 10% last part it would have been actual legit code.
Mindblowing! This is 100x VB6. The generated UIs are beautiful and professional. I am still trying it out and building an app for tracking expenses but it is working very well. The conversational dialogue it has with the developer is just fantastic. I am amazed at how clear the user experience was in Chris' mind. I am not sure what LLM is being used but this is better experience than any LLM. Given this is first version, I look forward to what comes next!
Few issues:
1. The 150 message limit is understable but it suddenly pops up and you lose significant work. I was working on UI mockup and just as I had finished and was ready to go on implementation, this limit appeared and significant part of my work was lost.
2. After the first credit, the credit seems to exhaust pretty fast which makes it expensive, especially when you are trying it out.
3. Also I don't understand when you ask it to prototype different screens, why does it overwrites the same file.
4. It is not able to stop to seek user feedback but keeps trying different approach which kind of exhausts the credit. It would be nice if it describes its approach, so the human developer can provide their feedback.
5. It seems it is using OpenAI because it is often self-congratulatory to the point of being annoying sometimes.
I love the idea of Phoenix and server side rendering (I happen to work on SkyMass, a related project).
This is a tangential comment and should not detract from what Chris and team have created. I think closing the loop between agent and the running output is a great/critical step forward.
However, I find using AI to build transitional Apps with a UI is a bit like improving the way automobile steering wheels are made. In a world that soon won't need steering wheels at all.
If the AI is so good to write the code for an App, how much longer before you won't need those Apps in the first place? And then the question is, what will fill the role that Apps play today.
I think it boils down to: if the AI screws up what I asked it to do, who do I have to hold accountable? If the answer is that there is no one I can hold accountable, because the AI agent I used removes any and all onus of responsibility in its terms of service, then I'm not going to use it for anything non-trivial.
This looks really cool, but I gotta say I'm a bit uneasy with the apparent(?) closed-source + hosted + branding. "mix phx.new" is the way to generate a new Phoenix project, but "Phoenix.new" is closed source Fly.io product for building Phoenix projects?
Feels like we're getting into a weird situation if LLM providers are publishing open source agentic coding tools and OSS web app frameworks are publishing closed source/non-BYOK agentic coding tool. I realize this may not be an official "Phoenix" project but it seems analogous to DHH releasing a closed-source/hosted "Rails.new" service.
This is very cool! I will say though, my spidey senses kick in when looking at stuff like this, and make me wonder about how much I'm going to get vendored in here. Could I use it develop a site off fly.io? If the answer is no, then I'd say this is cool and I think useful for people who need something quick and simple and out of the box, but not something I would ever use on a serious production project.
There’s a “clone Git repo” thing in the left side bar, use that to clone the project locally, mix deps.get, mix phx.serve and you’re up. You can deploy this anywhere you want.
The mental models of Elixir/OTP and AI Agents are very compatible. I’ve felt for a long time that it would be one of the best platforms for building AI agents.
So is Phoenix.new a Fly.io product, or just under the fly umbrella? Also, is pricing clearly laid out anywhere (including what the additional costs are for permanently deployed/hosted services that arise from Phoenix) ? Didn't dig too hard admittedly, but wasn't obvious where to find or look for pricing information on the front page on mobile
Any chance of open sourcing the model instructions for this? Do you feed it all the Phoenix/LiveView/Elixir docs, or have you written more specialised instructions?
I find Claude to have quite a bit of problems trying to navigate changesets + forms + streams in my codebase, just wondered if you had any tips of making it understand better :)
A bit sad that the language and framework so enjoyable to write an read will be mostly hidden in a coding box.
And thinking about it made me realize that soon there will be a completely different programming language used solely by coding agents.
ChatGPT gives an interesting take on this, "The fundamental shift is that such a language wouldn’t be written or read, but reasoned about and generated. It would be more like an interlingua between symbolic goals and executable semantics, verbose, unambiguous, self-modifying, auto-verifiable, evolving alongside the agents that use it").
This makes me very uneasy. Not in what it is per se, but in what it shows about the direction of Phoenix.
I've been working with Phoenix a lot the last few months, and I like it a lot. But I do get the sense that the project suffers from wanting to perpetually chase the next new thing, even when that comes at the expense of the functional elegance and conceptual cohesiveness that I think is Phoenix' main strength.
LiveView is a great example. It's a very neat bit of tech, but it's shoe-horned surprisingly awkwardly into Phoenix. There's now a live view and non-live view way to do almost everything in Phoenix, and each has their own different foibles and edge cases. A lot of code needs to work with both (e.g. auth needs to happen at both levels, basically), meaning a surprising amount of code needs to have two, nearly identical variants: one with traditional Plug idioms, and then another using LiveView equivalents. Quick little view helpers end up with either convoluted 'what mode am I in?' branching, or (more likely) in view-mode-dependent wrappers around view-mode-independent abstractions. This touches even the simplest helpers (what is the current path?) and becomes more cumbersome from there. (And given the lack of static analysis for views, it can be non-trivial to even find out what is and isn't actually working where.)
Not every website should be a live view (e.g. hiking directions, for example), but that is clearly the direction of travel in Phoenix. Non-live views get the disparaging moniker 'dead views', and the old Phoenix.HTML helpers have been depreciated in favour of <.form />-style live components. The generators depend on those, plus Tailwind, Hero Icons and (soon) DaisyUI, all fetched live from various places on the Internet on build. This tight coupling to trendy dependencies will age poorly, and it makes for bumpy on-boarding (opinionated and tightly coupled isn't necessarily a smoother experience, just a more inflexible one).
So with all of that in mind, while I'm not shocked to see Phoenix jump on the vibe coding hype train, I guess I am disappointed.
The revelation that AI is now writing PRs for Phoenix itself is not confidence inspiring. I rely on frameworks like Phoenix because I don't want to have to think about the core abstractions around getting a website to my users; I want to focus on my business logic. But implicit in that choice is the assumption that someone is thinking about those things. If it's AI pushing out Phoenix updates now, my trust level and willingness to rely on this code drops dramatically. I also do not expect Phoenix' fraying conceptual cohesiveness to get any better if that's the way we're headed.
Phoenix is still an amazing piece of tech, but I wish I felt more at ease about its future trajectory.
This is incredible. It does seem quite expensive compared to Zed or Claude Code now it's on Pro. But neat enough I've burned through the $20 subscription credit despite being a bit of an AI sceptic. This seems to have a much better handle on UI design (unless I'm missing something with the other agents), but as a solo dev I'm becoming quite convinced. It's also got me to try out fly again.
I couldn't get Tidewave working but I must try again to see if Tidewave with Claude Code would offer this level of awesome.
ps. @fly - please let me buy more credit, I just get an error!
Hey @chrismccord, very confused but this is a collab between you and the FLY.IO project right? Like I can't eject the app from this and run it myself? This isn't an open source Phoenix project?
It's not really about the remote IDE. It's about an integrated environment where the agent can do everything it needs (install OS packages, inspect the code, view the app via a browser etc) in order to build what you want. It could end up being the place you 'start' an app, before exporting it and fleshing out the features locally.
Thanks! Everything is overly complicated in this space. It's probably far easier than you think. The open secret is it's just a loop that POST [provider]/chat/completions.
Elixir is particularly well suited here. In Elixir this is a genserver doing http posts and reacting to the token stream. The LiveView chat gets messages from the genserver agent regardless of where it is on the planet, and the agent also communicates with the phoenix channel websocket talking to the IDE machines with regular messages, again anywhere they are on the planet.
This is great. I had to back out of a phoenix project and rewrite it in Django because I couldn't get good AI assistance. I'm pretty inexperienced with Elixir and Phoenix but understand the benefits enough to want to make projects in it. So this is really cool.
I had this experience too. Though most of my issues were with my model not necessarily with Elixir itself so much as understanding the Phoenix model, state, and CLI. Maybe even differences in versions? Wasn't always clear.
This is really cool! And, that you did it in a few weeks is insane.
How did you get VS Code embedded in your app? I'm aware of projects like Monaco, and that vscode.dev exists - so it's clearly possible - but I didn't realize it was something others could build upon?
I really wish I could move to those nice new editors, but as a vim user I just feel paralyzed when I cannot use vim bindings. And all "emulations" I tried are just incomplete.
I'm with you. I'm going to try Zed in the next couple days based on the response to my comment here. https://news.ycombinator.com/item?id=44322560 . I'm stuck with vim. My fingers nearly only work vim, but I managed to move to neovim, which worked. Maybe (something else) can work too.
as an avid vim user who moved to emacs evil-mode for a better vim than vim, and now who uses vscode with vscode-vim, it pains me to admit a web browser based editor is a better vim than vim. Somehow starts faster and is less kludgey and more scriptable. You can install extensions on phoenix.new, so vim is not a blocker for you. I drive vim emulation in it every day both on desktop app and within phoenix.new. Couldn't use it without it :)
You can pull the repo, tweak it locally with Vim, push it back and ask the LLM to work on top of that. No need to use the built in IDE if you don’t like it.
Phoenix needs an ActiveRecord-like database abstraction layer. Many Rails developers try Phoenix at some point because they may need better performance. They’re so accustomed to the Rails structure that they assume Rails has done everything right. However, Ecto and ActiveRecord are two very different beasts. When Rails developers try out Ecto, they often feel there’s too much boilerplate and believe the Rails design is much more intuitive. This, I think, is one reason Phoenix struggles to attract Rails developers. If it can’t please Rails users, it will rarely appeal to others.
The Ash framework is a data abstraction layer you light want to check out, although I'm not familiar with Rails/ActiveRecord to tell if it's closer to what they're after.
Because of the amount of Python and JS in the wild is much more than the amount of Elixir code, so the LLMs have much more data to base their answers on.
Integrating AI assistance directly into an Elixir IDE could boost productivity, especially for newcomers. Excited to see how remote SSH and local workflows develop!
Maybe you mean the "My AI Skeptic Friends Are All Nuts" blog post on fly.io?
Where they have this nugget about plagiarism:
> But if you’re a software developer playing this card? Cut me a little slack as I ask you to shove this concern up your ass. No profession has demonstrated more contempt for intellectual property.
So I guess if you have concerns about them using any code you upload using this tool you can shove it up your ass.
I'm surprised they are investing into this. I checked Phoenix recently because I was interested in LiveView and there isn't even an official AWS SDK for Elixir.
Honestly doubt the AI stuff is going to move the needle much if you can't even have a dependable S3 client.
Meanwhile I am a happy user of :ex_aws or :req_s3 which has done everything I need it to do. Object ops, iam policies, etc. A dependable S3 client has been there for years. The elixir core team doesn't need to maintain it.
ReqS3 is one of my favorite things to use: https://hexdocs.pm/req_s3/readme.html
Considering the horror the official AWS CLI is this seems like a strange example. I’ve used both the non official libraries and they work fine. The one that is auto generated doesn’t feel very Elixir, but that’s to be expected.
What are you talking about, there has been a AWS client forever and I've never had a problem. It's not something you really need an official sdk for they are anyway often just reference because you might want different performance characteristics.
I've usually not seen more than 3 or so official SDK for most services and there are a lot more programming languages than that. For example Microsoft's Graph API doesn't have an official Ruby client, they have one that sort of works.
colecut|8 months ago
I saw this and thought, if this doesn't get me to give it a go, nothing will.
Less than 45 minutes after signing up for fly.io, I have a multi-room tic tac toe game deployed.
https://tic-tac-toe-cyber.fly.dev/
I had it build the game, opting for a single room at first to see if that worked. Then I had it add multiple rooms on a different git branch in case that didn't work. It worked great.
I learned very little about elixir, phoenix, or deploying to fly.io up to this point, and I already have a nice looking app deployed and running.
I know a lot of devs will hate that this is possible, and it is up to me now to look at the steps it took to create this and really understand what is happening, which are broken down extremely simply for me...
I will do this because I want to learn. I bet a lot of people won't bother to do that. But those people never would have had apps in the first place and now they can. If they are creating fun experiences and not banking apps, I think that is still great.
You guys have been releasing amazing things for years only to be poorly replicated in other languages years later.. but you really outdid yourselves here.
I'm blown away.
edit: is there a way to see how much of my credits were used by building this?
chrismccord|8 months ago
jonahx|8 months ago
curiouser3|8 months ago
chrismccord|8 months ago
tiffanyh|8 months ago
Just a clarifying question since I'm confused by the branding use of "Phoenix.new" (since I associate "Phoenix" as a web framework for Elixir apps but this seems to be a lot more than that).
- Is "Phoenix.new" an IDE?
- Is "Phoenix.new" ... AI to help you create an app using the Phoenix web framework for Elixir?
- Does "Phoenix.new" require the app to be hosted/deployed on Fly.io? If that's the case, maybe a naming like "phoenix.flyio.new" would be better and extensible for any type of service Fly.io helps in deployment - Phoenix/Elixir being one)
- Is it all 3 above?
And how does this compare to Tidewave.ai (created as presumably you know, by Elixir creator)
Apologies if I'm possibility conflating topics here.
joevandyk|8 months ago
Is it possible to get that headless Chrome browser + agent working locally? With something like Cursor?
troupo|8 months ago
- ability to run locally somehow. I have my own IDE, tools etc. Browser IDEs are definitely not something I use willingly.
- ability to get all code, and deploy it myself, anywhere
---
Edit: forgot to add. I like that every video in Elixir/Phoenix space is the spiritual successor to "15-minute rails blog" from 20 year ago. No marketing bullshit, just people actually using the stuff they build.
pmarreck|8 months ago
These other details that are not “just coding” are always the biggest actual impediments to “showing your work”. Thanks for making this!! Somehow I am only just discovering it (toddler kid robbing my “learning tech by osmosis” time… a phenomenon I believe you are also currently familiar with, lol)
Snakes3727|8 months ago
krts-|8 months ago
The LLM chat taps out but I can't find a remaining balance on the fly.io dashboard to gauge how I'm using it. I _can_ see a total value of purchased top ups, but I'm not clear how much credit was included in the subscription.
It's very addictive (because it is awesome!) but I've topped up a couple of times now on a small project. The amount of work I can get out the agent per top-up does seem to be diminishing quite quickly, presumably as the context size increases.
burnt-resistor|8 months ago
PS: Why can't I get IEx to have working command-line history and editing? ;-P
mrdoops|8 months ago
miki123211|8 months ago
2. How do you handle 3rd party libraries? Can the agent access library docs somehow? Considering that Elixir is less popular than more mainstream languages, and hence has less training data available, this seems like an important problem to solve.
sho|8 months ago
beepbooptheory|8 months ago
finder83|8 months ago
I was curious what the pricing for this is? Is it normal fly pricing for an instance, and is there any AI cost or environment cost?
And can it do multiple projects on different domains?
Munksgaard|8 months ago
causal|8 months ago
arrowsmith|8 months ago
cosmic_cheese|8 months ago
Dowwie|8 months ago
jonator|8 months ago
How do you protect the host Elixir app from the agent shell, runtime, etc
b0a04gl|8 months ago
b0a04gl|8 months ago
[deleted]
b0a04gl|8 months ago
ativzzz|8 months ago
1. Remote agent - it's a containerized environment where the agent can run loose and do whatever - it doesn't need approval for user tasks because it's in an isolated environment (though it could still accidentally do destructive actions like edit git history). I think this alone is a separate service that needs to be productionized. When I run claude code in my terminal, automatically spin up the agent in an isolated environment (locally or remotely) and have it go wild. Easy to run things in parallel
2. Deep integration with fly. Everyone will be trying to embed AI deep into their product. Instead of having to talk to chatgpt and copy paste output, I should be able to directly interact with whatever product I'm using and interact with my data in the product using tools. In this case, it's deploying my web app
indigodaddy|8 months ago
https://hub.docker.com/r/linuxserver/kasm
https://www.reddit.com/r/kasmweb/comments/1l7k2o8/workaround...
brainless|8 months ago
It does not handle any infrastructure, so no hosting. It allows me to set multiple small tasks, come back and check, confirm and move forward to see a new branch on GitHub. I open a PR, do my checks (locally if I need to) and merge.
unknown|8 months ago
[deleted]
risyachka|8 months ago
How is this innovation?
travisgriggs|8 months ago
I worked all day on a Phoenix app we’re developing for ag irrigation analysis. Of late, my “let’s see what $20/mo gets you” is Zed with its genetic offerings.
It actually writes very little Elixir code for me. Sometimes, I let it have a go, but mostly I end up rewriting that stuff. Elixir is fun, and using the programming model as intended is enlightening.
What I do direct it to write a lot is a huge amount of the HEEX stuff for me. With an eventual pass over and clean it up for me. I have not memorized all of the nuances of CSS and html. I do not want to. And writing it has got to be the worst syntactic experience in the history of programming. It’s like someone said people lisp was cool; rather than just gobs of nested parentheses, let’s double, nay triple, no quadruple down on that. We’ll bracket all our statements/elements with a PAIR of hard to type characters, and for funsies, we’ll make them out different words in there. And then when it came to years of how to express lists of things, it’s like someone said “gimme a little bit of ini, case insensitivity, etc”. And every year, we’ll publish new spec of new stuff that preserves the old while adding the new. I digress…
I view agentic coding as an indictment on how bad programming has gotten. I’m not saying there wouldn’t be value, but a huge amount of the appeal, is that web tech is like legalese filled with what are probably hidden bugs that are swallowed by browsers in a variety of u predictable ways. What a surprise that we’ve given up and decided the key tools do the probabilistic right thing. It’s not like we had a better chance of being any more correctly precise on our own anyway.
arrowsmith|8 months ago
As an Elixir enthusiast I've been worried that Elixir would fall behind because the LLMs don't write it as well as they write bigger languages like Python/JS. So I'm really glad to see such active effort to rectify this problem.
We're in safe hands.
acedTrex|8 months ago
bad_haircut72|8 months ago
bluehatbrit|8 months ago
From time to time it tries to do something a little old-school, but nothing significant really. It's very capable at spitting out entire new features, even in liveview.
Over all the experience has very productive, and at least on-par with my recent work on similar sized python and nextjs applications.
I think because I'm using mostly common and well understood packages it has a big leg up. I also made sure to initialise the phoenix project myself to start with so it didn't try to go off on some weird direction.
mrcwinn|8 months ago
If Phoenix.new helps solve that problem, I’m all for the effort. But otherwise, the sole focus of the community leaders of Elixir should be squarely and exactly focused on creating the incentives and dynamics to grow the base.
Compare, for example, Mastra in TypeScript or PydanticAI in Python. Elixir? Nothing.
Not here to bash. It’s more just a disappointment because otherwise I think nothing comes close.
throwawaymaths|8 months ago
victorbjorklund|8 months ago
nxobject|8 months ago
neya|8 months ago
If you want to take your website and business down, use ChatGPT-4o's code
unknown|8 months ago
[deleted]
pawelduda|8 months ago
te_chris|8 months ago
zorrolisto|8 months ago
itsautomatisch|8 months ago
krainboltgreene|8 months ago
mrkurt|8 months ago
My experience with software development is maybe different than yours. There's a massive amount of not-yet-built software that can improve peoples' lives, even in teeny tiny ways. Like 99.999% of what should exist, doesn't.
Building things faster with LLMs makes me more capable. It (so far) has not taken work away from the people I work with. It has made them more capable. We can all build better tools, and faster than we did 12 months ago.
Automation is disruptive to peoples' lives. I get that. It decreases the value of some hard earned skills. Developer automation, in my life at least, has also increased the value of other peoples' skills. I don't believe it's anti worker to build more tools for builders.
yunwal|8 months ago
jonator|8 months ago
The days are numbered where humans are sitting typing out code themselves.
It's akin to the numbered days of type writer secretaries of the 20th century.
wturner|8 months ago
leafmeal|8 months ago
Overall I think we would all be happier if efficient machines take away the drudgery of our daily work and allow us to focus on things that really matter to us. . . as long as our basic needs are met.
unknown|8 months ago
[deleted]
losvedir|8 months ago
I have a question about how you manage context, and what model you use. Gemini seems the best at working with give context windows right now, but even that has its limitations. Thinking about working with Claude Code, a fair bit of my strategizing is in breaking down work and managing project state to keep context size manageable.
I'm watching the linked video and it's amazing seeing it in action, but I'm imagining continuing to work on a project and wondering if it will start losing its way so to speak. Can you have it summarize stuff, and can you start a session clean with those summaries, and have it "forget" files it won't need to use for this next feature, etc?
rustc|8 months ago
tptacek|8 months ago
gavmor|8 months ago
I've been daydreaming of an agentic framework that maximally exploits BEAM. This isn't that, but maybe jido[0] is what I'm looking for.
0. https://github.com/agentjido/jido
fridder|8 months ago
CollinEMac|8 months ago
arrowsmith|8 months ago
Which LLMs do you use that you find are best with Elixir/Phoenix?
vaer-k|8 months ago
jsmo|8 months ago
afro88|8 months ago
zombiwoof|8 months ago
hard to put confidence in AI vibe hacks when the basic stuff just doesn't work.
* (Mix) The database for Myapp.Repo couldn't be created: killed
Sytten|8 months ago
artirdx|8 months ago
Few issues:
1. The 150 message limit is understable but it suddenly pops up and you lose significant work. I was working on UI mockup and just as I had finished and was ready to go on implementation, this limit appeared and significant part of my work was lost. 2. After the first credit, the credit seems to exhaust pretty fast which makes it expensive, especially when you are trying it out. 3. Also I don't understand when you ask it to prototype different screens, why does it overwrites the same file. 4. It is not able to stop to seek user feedback but keeps trying different approach which kind of exhausts the credit. It would be nice if it describes its approach, so the human developer can provide their feedback. 5. It seems it is using OpenAI because it is often self-congratulatory to the point of being annoying sometimes.
psadri|8 months ago
This is a tangential comment and should not detract from what Chris and team have created. I think closing the loop between agent and the running output is a great/critical step forward.
However, I find using AI to build transitional Apps with a UI is a bit like improving the way automobile steering wheels are made. In a world that soon won't need steering wheels at all.
If the AI is so good to write the code for an App, how much longer before you won't need those Apps in the first place? And then the question is, what will fill the role that Apps play today.
liampulles|8 months ago
colecut|8 months ago
A coded app is significantly more efficient to execute, and more predictable, than dealing with AI in most situations.
themgt|8 months ago
Feels like we're getting into a weird situation if LLM providers are publishing open source agentic coding tools and OSS web app frameworks are publishing closed source/non-BYOK agentic coding tool. I realize this may not be an official "Phoenix" project but it seems analogous to DHH releasing a closed-source/hosted "Rails.new" service.
liampulles|8 months ago
loloquwowndueo|8 months ago
There’s a “clone Git repo” thing in the left side bar, use that to clone the project locally, mix deps.get, mix phx.serve and you’re up. You can deploy this anywhere you want.
andy_ppp|8 months ago
moffers|8 months ago
zupa-hu|8 months ago
indigodaddy|8 months ago
unvs|8 months ago
I find Claude to have quite a bit of problems trying to navigate changesets + forms + streams in my codebase, just wondered if you had any tips of making it understand better :)
aytigra|8 months ago
And thinking about it made me realize that soon there will be a completely different programming language used solely by coding agents. ChatGPT gives an interesting take on this, "The fundamental shift is that such a language wouldn’t be written or read, but reasoned about and generated. It would be more like an interlingua between symbolic goals and executable semantics, verbose, unambiguous, self-modifying, auto-verifiable, evolving alongside the agents that use it").
troad|8 months ago
I've been working with Phoenix a lot the last few months, and I like it a lot. But I do get the sense that the project suffers from wanting to perpetually chase the next new thing, even when that comes at the expense of the functional elegance and conceptual cohesiveness that I think is Phoenix' main strength.
LiveView is a great example. It's a very neat bit of tech, but it's shoe-horned surprisingly awkwardly into Phoenix. There's now a live view and non-live view way to do almost everything in Phoenix, and each has their own different foibles and edge cases. A lot of code needs to work with both (e.g. auth needs to happen at both levels, basically), meaning a surprising amount of code needs to have two, nearly identical variants: one with traditional Plug idioms, and then another using LiveView equivalents. Quick little view helpers end up with either convoluted 'what mode am I in?' branching, or (more likely) in view-mode-dependent wrappers around view-mode-independent abstractions. This touches even the simplest helpers (what is the current path?) and becomes more cumbersome from there. (And given the lack of static analysis for views, it can be non-trivial to even find out what is and isn't actually working where.)
Not every website should be a live view (e.g. hiking directions, for example), but that is clearly the direction of travel in Phoenix. Non-live views get the disparaging moniker 'dead views', and the old Phoenix.HTML helpers have been depreciated in favour of <.form />-style live components. The generators depend on those, plus Tailwind, Hero Icons and (soon) DaisyUI, all fetched live from various places on the Internet on build. This tight coupling to trendy dependencies will age poorly, and it makes for bumpy on-boarding (opinionated and tightly coupled isn't necessarily a smoother experience, just a more inflexible one).
So with all of that in mind, while I'm not shocked to see Phoenix jump on the vibe coding hype train, I guess I am disappointed.
The revelation that AI is now writing PRs for Phoenix itself is not confidence inspiring. I rely on frameworks like Phoenix because I don't want to have to think about the core abstractions around getting a website to my users; I want to focus on my business logic. But implicit in that choice is the assumption that someone is thinking about those things. If it's AI pushing out Phoenix updates now, my trust level and willingness to rely on this code drops dramatically. I also do not expect Phoenix' fraying conceptual cohesiveness to get any better if that's the way we're headed.
Phoenix is still an amazing piece of tech, but I wish I felt more at ease about its future trajectory.
ferfumarma|8 months ago
Having a full stack that is easy to use as a learning sandbox is incredibly helpful in that regard, so this looks amazing.
krts-|8 months ago
I couldn't get Tidewave working but I must try again to see if Tidewave with Claude Code would offer this level of awesome.
ps. @fly - please let me buy more credit, I just get an error!
chrismccord|8 months ago
toolhouseAI|8 months ago
olafura|8 months ago
ipnon|8 months ago
nixpulvis|8 months ago
unknown|8 months ago
[deleted]
qudat|8 months ago
abrookewood|8 months ago
nilirl|8 months ago
Does anyone know any great resources to learn how to design agents? Tool agnostic resources would be awesome.
chrismccord|8 months ago
Elixir is particularly well suited here. In Elixir this is a genserver doing http posts and reacting to the token stream. The LiveView chat gets messages from the genserver agent regardless of where it is on the planet, and the agent also communicates with the phoenix channel websocket talking to the IDE machines with regular messages, again anywhere they are on the planet.
I talk about this quite a bit in my ElixirConfEU talk and distill things down: https://youtu.be/ojL_VHc4gLk?si=MzQmz-vofWxWDrmo&t=1040
unknown|8 months ago
[deleted]
mcdirty|8 months ago
dontlaugh|8 months ago
causal|8 months ago
unknown|8 months ago
[deleted]
martypitt|8 months ago
How did you get VS Code embedded in your app? I'm aware of projects like Monaco, and that vscode.dev exists - so it's clearly possible - but I didn't realize it was something others could build upon?
Again, kudos!
__0x01|8 months ago
chrismccord|8 months ago
ethan_smith|8 months ago
sergiotapia|8 months ago
What usage limits do we get with the $20 monthly price?
Thank you!
kuon|8 months ago
timeinput|8 months ago
chrismccord|8 months ago
loloquwowndueo|8 months ago
poisonta|8 months ago
lawn|8 months ago
tobyhinloopen|8 months ago
This is very exciting and I’ll check it out!
josefrichter|8 months ago
johnwheeler|8 months ago
lawn|8 months ago
unknown|8 months ago
[deleted]
rramon|8 months ago
chrismccord|8 months ago
arrowsmith|8 months ago
sockboy|8 months ago
artur_makly|8 months ago
mcdirty|8 months ago
tough|8 months ago
ty fly team
asmodeuslucifer|8 months ago
Disabled on news.ycombinator.com
citizenpaul|8 months ago
"They are not making money off AI".was the most common response to my pointing out they were shilling AI. Feels good to be right.
lawn|8 months ago
Where they have this nugget about plagiarism:
> But if you’re a software developer playing this card? Cut me a little slack as I ask you to shove this concern up your ass. No profession has demonstrated more contempt for intellectual property.
So I guess if you have concerns about them using any code you upload using this tool you can shove it up your ass.
pier25|8 months ago
Honestly doubt the AI stuff is going to move the needle much if you can't even have a dependable S3 client.
chrismccord|8 months ago
techpression|8 months ago
olafura|8 months ago
https://hex.pm/packages/ex_aws https://hex.pm/packages/ex_aws_s3
I've usually not seen more than 3 or so official SDK for most services and there are a lot more programming languages than that. For example Microsoft's Graph API doesn't have an official Ruby client, they have one that sort of works.
conradfr|8 months ago
4b11b4|8 months ago