Skip to main content

codetato

Splash screen of codetato.com

A quick to the point blog post showcasing a project I built a while back as a way to test out some front-end only AI work. Also a way to use a funny name for a domain.

So let's dive into the web-app called “codetato” available at codetato.com

What is codetato​

Codetato is the name of the domain I bought a few years back as a fun little name and a way to domain squat a .com. I didn’t have a firm idea of what it could be until a few months back when I wanted to dig into building more with AI and thought the domain would be a nice place to push something to. So I finished building out my test project with the goal of “cheap hosting in mind” and took over the domain.

So, codetato is an “AI app sandbox that allows you to run open-source AI models locally and 100% privately in your browser. Accelerated by WebGPU — no servers, no API keys, and no subscriptions.”

Codetato landing page

Core features​

The main core features are:

  • Ability to download/run models from the browser directly
  • Chat with these models
  • Have the models talk to each other

Codetato chat interface

There’s a few key caveats with how the app works, namely around needing to run/pull models through your own network. This can be expensive, and requires decent enough hardware to run, however hosting such a solution is very cheap compared to running the models on the server-side, even with the promoted models being so lightweight.

I only picked smaller models to outright prevent users from easily trying to download a massive model and destroying their bandwidth or hard drive. That said even the smallest models are decent enough that anyone on a metered connection might have to pay attention.

Codetato model registry

There are also some extra features that try to calculate if your machine will be able to run anything, there’s so many ways this can go wrong, and even when it goes right performance is mixed.

Core technologies​

The main technologies used are:

Practically, the Next.js side is probably redundant or non-optimal. Since the app is entirely client-side, having a Vite-based stack would have worked better, been cheaper to host/run, and been easier to reason about. I still don’t believe Next.js is the best option the majority of the time, even if it's the most commonly picked “first choice” today. The advantages it offers just don’t seem sensible for an app like this, but nonetheless, I wanted to use it for more exposure, even if most of the app is mostly vibe coded.

Main issues​

Probably the most obvious issue to anyone who actually tried to use the website was performance and stability. Since WebGPU is platform-specific, different kinds of devices could perform drastically differently on the site. I was able to test only on a few devices, and each had mixed results in performance. My desktop with its dedicated GPU ran pretty great, near locally hosted methods such as through LM Studio. My phone, on the other hand, struggled to get a single token per second. I had a few friends try out the site, and the performance degraded to the point it would just crash on some of their devices.

I’ve made a few attempts at stabilizing this aspect of the site, along with improving the monitoring so I can try to gain some level of insight into the crashes and poor performance, but without any way to test these platforms reliably I didn’t want to continue down the path. Knowing what was possible was always the goal, just not something I wanted to build upon in its current state due to how messy it was with vibe coding.

The future​

Truthfully the project is going to stay as-is for the foreseeable future. I have too many other things on my plate I want to get to, and this project was just a great way to burn tokens and experiment, while checking out transformers.js and getting something setup that I can test token speed on essentially any device.

Even getting this blog post out took a while, codetato has been sitting there-as is for months and I’ve only recently swung back to my blog to try to catch up on stuff, including announcing this project. I have a long running post that I also plan on getting out soon!

Until next time, keep learning, keep building and keep questioning everything!