Shelley is exe.dev's coding agent. The name refers to the Unix shell, since it's good at operating the shell tool, and, yes, it shares a name with the poet Percy Bysshe Shelley.
Shelley is open source. Check it out at https://github.com/boldsoftware/shelley.
Our previous experience building the Sketch coding agent influenced exe.dev and Shelley significantly; this post both describes Shelley and shares what we learned. Stop reading, though. Go to https://exe.dev/new on your mobile phone and build something. Go! Be gone!
Shelley is a mobile-friendly, web-based, multi-conversation, multi-modal, multi-model, single-user coding agent built for, but not exclusive to, exe.dev. It does not come with authorization or sandboxing: bring your own.
Mobile-friendly because ideas can come any time.
Web-based because terminal-based scrollback is punishment for shoplifting in some countries.
Multi-modal because screenshots, charts, and graphs are necessary, not to mention delightful.
Multi-model to benefit from all the innovation going on.
Single-user. Shelley runs on your VM. This lets us put the agent right next to the systems it's working on.
Isolation & Lifetimes
Neither Sketch nor Shelley ask the user for permission. Instead, they assume they are running in an appropriately sandboxed environment. For Sketch, we used gVisor-based containers for our hosted solution and we used Docker if you ran Sketch locally. We assumed your container would live exactly as long as your conversation with the agent. This was a mistake. Imagine having IT wipe your laptop clean every day? That's no way to live!
With exe.dev, I spin up a VM specific to a project, and I use and customize that VM as my project evolves. Spinning up a new VM is only seconds away, but I tend to prompt Shelley with "in a new worktree…", and it works well, including having many parallel conversations.
State storage
Shelley keeps its state in a sqlite database in ~/.config/shelley/shelley.db.
It's delightful. You can instruct Shelley to read its old conversations. You
can copy the file around if you need to. Users have had Shelley debug itself
with its database and sent bug reports. (Thank you!) I now think of my Shelley
history like my shell history (shout-out to Ctrl-G, the OG, and atuin, the new
generation)... I can always refer to it.
Mobile
With Shelley, I set out to be mobile-friendly from the get-go. This turns out to be a clarifying constraint. You can't just place buttons willy-nilly if you're dealing with a 16cm screen! Because exe.dev VMs do not go to sleep, and because they're big enough to do real work, you can check in on your agent or kick off a new idea from your phone.
Web
As the Latin proverb says, de gustibus non est disputandum ("about tastes, it is not to be disputed"), but I vastly prefer the affordances of the web GUI over terminal interfaces. Scroll up and down, look at pictures, copy and paste. Maybe they were onto something over at Xerox PARC.
The killer feature though is exe.dev's proxy support, which was inspired by Sketch's similar feature. When you ask Shelley to spin up a web server, you can access it from your laptop or phone immediately, and test it out. I find that I spend a lot of my time with coding agents doing the testing; Shelley and exe.dev conspire to make that easier. (Shelley also imported Sketch's code review UI, based on Monaco diffs.)
Startup time
How fast you can get to your agent is important. This video is not sped up. (Our VM creation is sometimes faster than Route53 DNS propagation; we're working on it.)
The Promise of Mutable Software & The Topology of Agents
If you've built an internal tool, you know how useful and powerful it is, and, inevitably, how painful making little changes to it is. By running the tool and hosting the coding agent on the same VM, behind the same HTTP proxy, modifying the tool is one click away.
We've done this, for example, for the Discord bot that promotes Discord messages to bugs in our issue tracker and for the logs database agent that helps us query our logs. These are conceived, built, and deployed on exe.dev and Shelley.
For non-load-bearing internal tools, you can host and edit the tool in the same place. You don't have to, but it works well.
Hello Shelley!
Give Shelley a shout. We're over in the exe.dev Discord in the #shelley channel; here's our GitHub; give it a spin. If you want to run it locally, that's fun too!
exe.dev