I admit that I've been quiet for the last few weeks. I've been working with Claude nonstop in a ralph-loop-esque development cycle to create version one of my project. I'm calling V1 "AInstance", but that is not the final name. Although "AInstance" feels a little bit too cheesy for my taste, it accurately reflects an important differentiator in what this product does. Let me explain how it works, or at least how it should work once debugging is finished. I'll take this blog post to identify the core concepts that drive AInstance. In the next one or two blog posts, I'll provide a demo of the product and dive into how version two can focus on human-centered design.
Right now, AInstance is a command line interface that lets you type simple commands directly into your terminal to develop software with agents on your computer. AInstance works by establishing a library folder on your computer that houses special items, including agents, skills, and prompt templates. Through simple AInstance commands, you can make a project folder anywhere on your computer and import copies of the specific skills, agents, and prompt templates that you choose. Type in
ainstance chat --agent agent-nameTo chat with an agent in your project. Here's an example of me creating a new project, adding a builder agent (you'll see that the agent's skills are added automatically), and chatting with the agent.
The builder agent is an agent that comes built in to the AInstance library to help users get started quickly. Users can add their own agents and edit the built-in files.
AInstance is built to run loops. To run an agent in a loop, with each iteration of the loop being a fresh context window supplied with the same prompt, use this command:
ainstance loop --agent agent-name --prompt file-name --max-iterations XXI'll save the example for a full demo. Since my last round of tests, critical bugs have hopefully been fixed that will let me do real things with agents without encountering draining as much cash or encountering unexplained stops. We'll find out shortly if the fixes worked.
In future versions, this single-agent-loop feature might become outdated as I add workflows to the list of items you can include in your library. A one-agent loop can be one of many more complex agentic workflows that can be run.
Before wrapping up this introduction to AInstance, let's talk about why I gave that name to V1. Future versions will put human-centered design at the forefront through exciting differentiating features that could look like the aforementioned ability to create and run multi-agent workflows, adding "check-in points" where you can engineer the human into the loop, and cost visibility. These features will turn this endeavor from a "designer learning to use AI" project to a genuinely powerful tool for creating software, designed with the user at the forefront. However, AInstance has one critical feature that really excites me: instancing (surprise!).
The files that live in your AInstance library - tools like agents, skills, prompt templates - are the originals. The copies of these files in each project are your instances. You can make changes to your instanced tools and choose whether or not you'd like to align the original versions of those items in your AInstance library with the changes you just made. Likewise, you can edit files in your library and choose to update your project tools to reflect their library counterparts. This idea of instancing is based on the usability innovations of object-oriented programming, just as seen in Figma's component feature and GitHub's file management.
Practically, this means that if Jeff has 5 projects (each contained in their own folder on Jeff's MacBook) that each use an instance of his library's builder agent, he can choose to add a search_internet skill to the builder agent in his recipe blog project without altering the builder agent in the library or in other projects. When Jeff types in the AInstance command "status" inside his recipe blog project, he'll see that the builder agent has been broken from the original.
Something like this:
Jeff can do several different things to manage his library. He can elect to simply keep that difference unique to his builder agent in the recipe blog directory, to update all of the other builders with that change, or to reset the builder in his recipe bog folder to match the library's builder again.
By typing in the --help command (or "--h"), Jeff can easily see all his options.
This wraps up the intro to AInstance. I'm looking forward to demoing and diving into how user-friendliness is a priority here.