Exploring Cow: A Local AI Project That Brings Fun and Functionality to Your Computer

Engineering Manager Joanna May on building Cow, a local AI terminal companion in Dart, and the charm of ASCII art on the inaugural episode of Very Good Engineering.

2 min read

In the digital landscape where cloud computing and AI are becoming increasingly dominant, the emergence of local AI solutions is a refreshing innovation. In the inaugural episode of Very Good Engineering, hosts Jorge Coca and Joanna dive into Joanna’s latest pet project, Cow, designed to serve as a humble AI for personal use. This blog post will explore the journey of creating Cow, the lessons learned, and the fascinating intersection of game development and app engineering.

The Genesis of Cow

Joanna shares how her passion for building tools led her to create Cow. Initially inspired by the high costs associated with using cloud-based AIs like ChatGPT, she sought to develop a local alternative. “Building a local AI turned out to be really hard,” Joanna admits, highlighting the technical challenges she faced. Despite the obstacles, the project became a testament to her perseverance and ingenuity.

Understanding Cow

Cow operates as a terminal interface that allows users to interact with a local AI model. Drawing comparisons to existing AI tools, Joanna explains that while Cow may not possess extensive knowledge like its cloud counterparts, it provides a unique, accessible experience. “It’s like a cloud code or codex, but running locally,” she states, making it an exciting option for those interested in local AI solutions.

The Technology Behind Cow

Joanna built Cow using Dart, leveraging the Nocturne library to create a terminal user interface. The project required her to integrate various components, including establishing connections with local AI models. “It’s just like using Flutter, but for the terminal,” she notes, emphasizing the familiar environment Dart provides. The development process also involved overcoming challenges with native bindings and package compatibility, showcasing Joanna’s determination to make Cow a reality.

The Unique Charm of Cow

What sets Cow apart is not just its functionality but also its personality. Joanna took the time to create a charming ASCII art cow to serve as the project’s mascot. “I had to do the ASCII art by hand,” she shares, revealing the effort behind the cow’s design. This attention to detail adds a fun element to the project, making it more engaging for users.

Conclusion

Cow exemplifies the spirit of ingenuity and creativity in technology. By merging her experiences in Flutter and game development, Joanna has created a local AI solution that is both functional and enjoyable. As AI continues to evolve, projects like Cow remind us of the importance of accessibility and personalization in technology. Key takeaways from this episode include the value of local AI solutions, the challenges of software development, and the joy of creating something uniquely yours.

Frequently Asked Questions

What is Cow?

Cow is a local AI terminal companion built in Dart that lets users interact with a local AI model from the command line — similar to cloud coding assistants, but running entirely on your own machine.

Why did Joanna build a local AI instead of using a cloud service?

Joanna was motivated by the high costs of cloud-based AI tools like ChatGPT and wanted a personal, accessible alternative that runs locally without relying on external services.

What technology is Cow built with?

Cow is built in Dart and uses the Nocturne library to create its terminal user interface. Joanna describes the experience as 'just like using Flutter, but for the terminal.'

What were the biggest challenges in building Cow?

Joanna highlights that building a local AI turned out to be genuinely hard — especially integrating with local AI models and working through native bindings and package compatibility issues.

Why does Cow have ASCII art?

The ASCII art cow is Cow's mascot and part of the project's personality. Joanna hand-crafted the art to give the tool a fun, distinctive character beyond its technical functionality.