Skip to content

Instantly share code, notes, and snippets.

@jeremychone
Last active April 7, 2026 01:13
Show Gist options
  • Select an option

  • Save jeremychone/e1d882f7ece6cf7bbb0fd5a7ef8cb9c4 to your computer and use it in GitHub Desktop.

Select an option

Save jeremychone/e1d882f7ece6cf7bbb0fd5a7ef8cb9c4 to your computer and use it in GitHub Desktop.
AIPack Cli vs. pro@coder CLI
======
User
===
I have a CLI for an agentic runtime, AIPack, written in Rust, and it allows you to build, run, and share AI packs written in Lua and Markdown.
It allows you to build, run, and share agent packs. An agent can be a single .aip file, Markdown/Lua, or a folder of .aip and .lua files.
One of the packs is `pro@coder`, which is, in a way, the main pack, and a very efficient way to code.
The trick is that AIPack has a relatively fancy interactive UI, but it has to be somewhat generic. It allows the agent to pin some messages. Later, I can have custom layouts and allow the user to prompt directly in the TUI. For now, files are the UI, which has its advantages.
But one of the benefits of AIPack is that it can run other packs, like `lab@ako`, which knows how to download and optimize a whole website in AI-optimized Markdown.
But the problem is that AIPack, even though it is somewhat descriptive, is never really clear. And to explain pro coder, we have to start with AIPack, explain the generic runtime for any type of agent, and then explain pro coder.
So, another strategy would be to create a custom CLI, pro coder. I have procoder.dev, and then push that.
It will use aip-core as the runtime, and the coding UI will be custom Rust.
This will use the AIPack runtime, aip-core or aip-rt, underneath, but it will be much more focused on coding, while still having the ability to run other .aip files as well.
So, users go to procoder.dev, download the CLI, and the whole experience is about coding.
Now, we can redefine what coding is. This is the trick.
Like any doc, Markdown can be considered coding now. So, people could use procoder to write their blog posts.
What do you think? Can you do a pros and cons of both approaches, first, stick with AIPack `aip run pro@coder` and enhanced UI capability there, and the other, do the `coder` and have this as the main CLI going forward.
========
AI
===
You’re really deciding between **a platform-first strategy (AIPack)** and a **product-first strategy (pro coder CLI)**. Both are valid—but they optimize for very different adoption paths.
Here’s a clear breakdown.
---
# 🧭 Option 1: Keep AIPack as the main entry
### (`aip run pro@coder` + better UI)
## 👍 Pros
### 1. **Single mental model (platform coherence)**
* Everything lives under one system: build, run, share packs.
* Users learn AIPack once → can use *any* agent (`pro@coder`, `lab@ako`, etc.).
* Strong long-term ecosystem play.
### 2. **Composability is your superpower**
* Running packs inside packs is *very* powerful.
* `pro@coder` can orchestrate other agents (like your web optimizer).
* This is hard to replicate cleanly in a single-purpose CLI.
### 3. **Lower maintenance surface**
* One CLI, one runtime, one distribution.
* No fragmentation between “coder CLI” vs “agent CLI”.
### 4. **Extensible UI evolution**
* You can gradually improve:
* pinned messages
* layouts
* TUI prompting
* Without breaking the model.
---
## 👎 Cons
### 1. **Onboarding friction (big one)**
* Users must understand:
* what AIPack is
* what a pack is
* what `pro@coder` is
* That’s *two abstractions before value*.
👉 This is your biggest problem.
---
### 2. **Generic UI dilutes the experience**
* Coding is a *high-expectation workflow*.
* A generic agent UI will always feel:
* slightly off
* less “magical” than purpose-built tools
---
### 3. **Marketing is harder**
* “Install AIPack, then run this pack”
vs
* “Install ProCoder”
One is infrastructure. The other is a product.
---
### 4. **Positioning confusion**
* Are you:
* building an *agent runtime platform*?
* or a *coding tool*?
Right now, you’re both—and that muddies the message.
---
# 🚀 Option 2: Create a dedicated `procoder` CLI
### (built on aip-core, custom Rust UI)
## 👍 Pros
### 1. **Crystal-clear value proposition**
* “This is a coding tool.”
* No explanation of packs needed.
👉 Massive onboarding win.
---
### 2. **You control the UX end-to-end**
* Custom TUI for coding:
* file tree
* diffs
* inline edits
* fast prompts
* No compromise for generic agents.
---
### 3. **Much stronger distribution story**
* `procoder.dev`
* download → start coding immediately
This is **product-led growth friendly**.
---
### 4. **You redefine “coding” (this is powerful)**
* Markdown = code
* Blog writing = coding
* Docs = coding
👉 This is actually a *very strong positioning angle*:
> “ProCoder is for thinking in files.”
---
### 5. **Easier to go viral**
* Dev tools spread when they are:
* opinionated
* sharp
* fast to try
A generic runtime rarely goes viral.
---
## 👎 Cons
### 1. **You fragment your ecosystem**
* Now you have:
* AIPack (platform)
* ProCoder (product)
Users may not understand the relationship.
---
### 2. **Duplication of effort**
* CLI UX
* commands
* install flow
* docs
Even if runtime is shared, surface area increases.
---
### 3. **You risk hiding your real innovation**
* The *true moat* might be:
* pack system
* composability
* agent runtime
If ProCoder becomes the face, AIPack might feel secondary.
---
### 4. **Cross-pack UX becomes awkward**
* Running `lab@ako` inside ProCoder:
* Does it feel native?
* Or like a bolt-on?
You’ll need a clean abstraction here.
---
# ⚖️ The Core Tradeoff
| Dimension | AIPack-first | ProCoder-first |
| ------------------ | ------------ | ------------------- |
| Onboarding | ❌ Hard | ✅ Easy |
| Power | ✅ High | ✅ High (if exposed) |
| UX quality | ⚠️ Generic | ✅ Tailored |
| Ecosystem | ✅ Strong | ⚠️ Hidden |
| Marketing | ❌ Complex | ✅ Clear |
| Long-term platform | ✅ Yes | ⚠️ Needs bridging |
---
# 🧠 What I’d Recommend (Strong Opinion)
👉 **Do both—but make ProCoder the front door.**
Not as two equal products, but as:
### **ProCoder = the product**
### **AIPack = the engine (mostly invisible)**
---
## 🔥 Suggested Strategy
### 1. Lead with ProCoder
* procoder.dev
* “The fastest way to code with AI”
* Zero mention of packs initially
---
### 2. Quietly embed AIPack concepts
* Under the hood:
* `.aip` files still work
* packs still run
But don’t force users to learn it upfront.
---
### 3. Reveal power progressively
Instead of:
> “Install AIPack, learn packs, run pro@coder”
Do:
> “Install ProCoder → start coding → oh btw you can run agents”
---
### 4. Reframe packs inside ProCoder
Don’t call them “packs” initially.
Call them something like:
* “tools”
* “workflows”
* “modes”
Then later:
> “Advanced: these are actually AIPacks”
---
### 5. Keep AIPack as:
* SDK
* power-user CLI
* ecosystem layer
---
# 💡 Key Insight
You don’t actually have a **technology problem**.
You have a **narrative layering problem**:
* AIPack = powerful but abstract
* ProCoder = concrete but narrower
👉 The solution is not choosing one.
👉 It’s choosing **which one users meet first**.
---
# 🧩 Final Take
If you stick with:
> `aip run pro@coder`
You’ll build something powerful…
but adoption will be slower and more niche.
If you ship:
> `procoder`
You have a real shot at:
* faster adoption
* clearer story
* stronger product identity
**And you still keep all the power underneath.**
---
If you want, I can sketch:
* a CLI UX for ProCoder
* or a positioning landing page
* or how to expose packs without calling them packs
Those decisions will matter a lot next.
======
User
===
Since AIPack and `aip run pro@coder` are working very well, I might first add an `agent-ui.lua` or something like that to allow the AIPack agent to have some sort of custom UI. This might help with onboarding users to the agent.
And also, today, I do not have the only `aipack.ai` repo, which does not help with understanding the power of packs.
=====
AI
===
That makes the AIPack-first path a lot stronger than it sounded at first.
If `aip run pro@coder` already works well, then the question shifts from “should I replace it?” to “how do I remove the comprehension tax without throwing away what already works?”
An `agent-ui.lua` layer sounds like a very good move because it attacks the real weakness directly: not runtime capability, but presentation and onboarding.
The main upside is that it lets you keep the platform model while making the product feel more specific. That is exactly the bridge you need. Instead of a generic shell that happens to run `pro@coder`, users start encountering a coding-shaped experience inside AIPack. That reduces the feeling that they are first learning a framework and only later getting value.
I think your current bottleneck is less about the CLI name and more about the lack of visible proof that “packs” are a real category, not just an implementation detail for pro coder. If the only strong public example is essentially the coding one, people will naturally read AIPack as “the weird way to launch pro coder,” not as a runtime for many useful agents.
So in that context:
**Adding custom agent UI inside AIPack**
is probably the highest-leverage next step, because it gives you:
* better first-run experience
* better differentiation per agent
* a path to purpose-built UX without fragmenting the product
* validation for whether custom UI is enough before creating a second CLI
And **building out the repo/ecosystem story**
is probably the second highest-leverage step, because users need to see a small universe, not a single example.
What you want is for people to think:
* AIPack is the runtime
* pro@coder is the flagship coding agent
* other packs prove the model is general
Right now, it sounds like users mostly see only the middle bullet.
My read is:
## Why `agent-ui.lua` is strategically smart
It preserves your best asset: the system already works.
It also lets you test a very important hypothesis cheaply:
whether the main problem is really “generic UI” rather than “generic CLI branding.”
If onboarding improves a lot after adding pack-specific UI, that is a strong sign you do **not** need to split into a separate `procoder` CLI yet.
It also gives you an architecture that remains useful even if you later launch `procoder`, because then ProCoder can simply be a specialized wrapper around the same UI/runtime ideas.
## Why the repo issue matters so much
A platform needs examples the way a language needs libraries.
Without a visible set of compelling packs, users do not infer:
* portability
* composability
* breadth
* ecosystem potential
They infer “single product with an unusual invocation syntax.”
That means your repo problem is not just a docs problem. It is a product-perception problem.
## So the practical pros of staying on AIPack, with these improvements
* You keep momentum on the thing that already works.
* You avoid premature product fragmentation.
* You improve onboarding at the right layer: the experience layer.
* You preserve the long-term ecosystem story.
* You can still launch `procoder` later from a much stronger base.
## The cons / risks
* You may still be asking users to understand “AIPack” before they care.
* If the ecosystem remains thin, custom UI alone will not fully solve the messaging problem.
* The more custom each agent becomes, the more pressure there will be to formalize UI contracts, versioning, capabilities, and layout APIs.
That last point is important: `agent-ui.lua` is a great idea, but if it works, it will become a product surface, not just a hack. So you should expect it to evolve into something like a real extension model.
## My recommendation now
I would not switch to a dedicated `procoder` CLI yet.
I would do this sequence:
1. Make `pro@coder` feel much more native inside AIPack through `agent-ui.lua`.
2. Create 3–5 genuinely impressive packs that are visibly different from coding.
3. Rewrite the story around AIPack so it is understood as “a runtime for file-shaped AI workflows,” not just a pack launcher.
4. Only after that, decide whether `procoder` is still needed as a separate front door.
Because once you have custom UI plus a real pack gallery, you can judge the real issue:
* is AIPack itself the problem?
* or was the problem just weak onboarding and lack of ecosystem proof?
My guess is that the second one is more true.
The strongest framing may be:
**AIPack is the runtime.
pro@coder is the flagship.
custom agent UI makes each pack feel like its own product.**
That is a very solid story.
The only thing I would watch out for is naming and docs. If users land on `aipack.ai` and still cannot immediately answer “what can I do with this today?”, then even a better UI will only partially help.
A good homepage should show, almost instantly:
* code a project with `pro@coder`
* turn a site into AI markdown with `lab@ako`
* create your own pack from Lua/Markdown
* run packs inside packs
That combination would make the platform legible.
My current opinion: you are probably closer than you think to making AIPack work as the main thing. The missing pieces sound more like **agent-specific UX and ecosystem proof** than a need for a new CLI brand.
=====
User
===
Since AIPack and `aip run pro@coder` are working very well, I might first add an `agent-ui.lua` or something like that to allow the AIPack agent to have some sort of custom UI. This might help with onboarding users to the agent.
And also, today, I do not have the only `aipack.ai` repo, which does not help with understanding the power of packs.
=====
AI
===
Short answer: **yes, but it’s not the main issue—and it’s very solvable.**
What you’re seeing is a **signal**, not necessarily a blocker.
---
# 🧠 What “people don’t like the name” actually means
Usually it’s not about aesthetics. It’s about **what the name fails to communicate**.
When people react negatively to *AIPack*, they’re often feeling one of these:
### 1. **It sounds generic / vague**
* “AI” + “Pack” could mean:
* model bundles
* prompt templates
* datasets
* plugins
* It doesn’t anchor to a clear mental model.
---
### 2. **It doesn’t imply a *runtime***
Your product is closer to:
* a runtime
* an execution environment
* a programmable agent system
But *AIPack* sounds like:
> a container of stuff
That mismatch creates confusion.
---
### 3. **It doesn’t signal “this is for me”**
Compare:
* `procoder` → immediately for developers
* `aipack` → for… who?
Names that lack audience targeting increase friction.
---
# ⚖️ Is this a real problem?
## 🚫 Not a critical problem (yet)
Because:
* your product is still evolving
* your audience is early adopters
* the experience matters more than the name right now
A great product can survive a mediocre name early on.
---
## ⚠️ But it *will* become a problem if:
* onboarding remains confusing
* positioning stays unclear
* you try to scale distribution
Because then the name becomes your **first explanation layer**—and right now it’s weak there.
---
# 🔍 Important distinction
You have **two different naming needs**:
### 1. The **platform name** (AIPack)
* internal
* ecosystem
* power users
* long-term abstraction
### 2. The **product entry point** (ProCoder)
* user-facing
* marketing
* first impression
* distribution
👉 These do NOT need to be equally strong.
---
# 💡 What I would do
## 1. Don’t rush to rename AIPack
Renaming now would:
* slow you down
* create churn
* not fix the real issue (onboarding + clarity)
---
## 2. Reduce how visible “AIPack” is
Instead of:
> “Install AIPack”
Shift toward:
> “Run ProCoder”
> “Powered by AIPack” (small, secondary)
This immediately removes friction.
---
## 3. Let ProCoder carry the narrative
This is key.
If users start with:
* `procoder`
Then later discover:
* “oh this runs on AIPack and can run other agents”
👉 the name AIPack becomes **infrastructure**, not a sales pitch.
---
## 4. Fix meaning before fixing naming
If you *do* keep AIPack, make it legible:
Instead of just:
> AIPack
Frame it as:
* “AIPack — a runtime for file-based AI agents”
* “AIPack — run and compose AI workflows from files”
Now the name is supported by clarity.
---
# 🧩 When should you consider renaming?
Only if, after improving:
* onboarding
* UI
* examples
* ecosystem
…people still say:
> “I don’t get what this is”
At that point, the name is probably actively hurting you.
---
# 🧠 My honest take
* The name **AIPack is mediocre but acceptable** for a platform layer.
* It is **not strong enough to be your main product brand**.
* It becomes much less of an issue if:
* ProCoder is the front door
* AIPack is the engine
---
# 🔥 Simple heuristic
Ask:
> “Would I put this name on the homepage hero?”
* **AIPack** → probably not
* **ProCoder** → yes
That tells you everything.
---
# 🧭 Bottom line
* Don’t panic about the name.
* Don’t rename yet.
* Do **hide it behind a stronger product surface**.
* Do **improve clarity of what it actually does**.
If you execute well on UX + examples, the name becomes a secondary issue.
If you don’t, even a perfect name won’t save it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment