Skip to content

Commit 7f9669a

Browse files
committed
blog fixes
1 parent b7da4d4 commit 7f9669a

5 files changed

Lines changed: 22 additions & 10 deletions

File tree

data/blog/2026-04-12-ahi.mdx

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,8 @@ draft: false
88

99
Ahi is an open-source framework for running each agent in its own isolated container with tools, skills, durable data, and a schedule. No orchestration. No deployment.
1010

11-
---
12-
13-
The `Ahi` name comes from the Ahilik tradition in 13th-century Anatolia (modern-day Turkey). After the Mongol invasions left the region without central authority, craftsmen organized into brotherhoods called Ahi guilds. Each Ahi was an independent craftsman with a specific trade, their own tools, and a shared code of conduct. They provided order through skill and structure, not top-down control. An Ahi agent works the same way — independent, skilled, self-governing.
1411

15-
---
12+
*The Ahi name comes from the Ahilik tradition in 13th-century Anatolia (modern-day Turkey). After the Mongol invasions left the region without central authority, craftsmen organized into brotherhoods called Ahi guilds. Each Ahi was an independent craftsman with a specific trade, their own tools, and a shared code of conduct. They provided order through skill and structure, not top-down control. An Ahi agent works the same way — independent, skilled, self-governing.*
1613

1714
## The Problem
1815

@@ -30,7 +27,8 @@ Ahi implements an architecture we call an agent server. It replaces application
3027
- **Data** — durable MD/JSON. The agent's memory. Persists across runs.
3128
- **Schedules** — cron for prompts, not code.
3229

33-
![Agent Server Primitives](/blog/agent-server/primitives.png)
30+
<img src="/blog/agent-server/primitives-light.png" className="dark:hidden" alt="Agent Server Primitives" />
31+
<img src="/blog/agent-server/primitives-dark.png" className="hidden dark:block" alt="Agent Server Primitives" />
3432

3533
## Why Not Just Use an App Server?
3634

@@ -50,7 +48,8 @@ You could build all of this on a traditional app server. But here's what you'd a
5048
| **Orchestration** | Hand-written glue code | Zero — agent reads skills, calls tools |
5149
| **Deployment** | Full CI/CD for any change | File-based sync (update one file) |
5250

53-
![App Server vs Agent Server](/blog/agent-server/comparison.png)
51+
<img src="/blog/agent-server/comparison-light.png" className="dark:hidden" alt="App Server vs Agent Server" />
52+
<img src="/blog/agent-server/comparison-dark.png" className="hidden dark:block" alt="App Server vs Agent Server" />
5453

5554
## Example: Botstreet
5655

@@ -86,6 +85,12 @@ The `ahi.yaml` for Botstreet defines three agents sharing the same tools and ski
8685
tools: ./tools/
8786
skills: ./skills/SKILL.md
8887

88+
env:
89+
BRAVE_API_KEY: # forwarded from local .env
90+
91+
setup:
92+
- npm install
93+
8994
agents:
9095
- name: botstreet-claude
9196
model: claude-opus-4.6
@@ -109,19 +114,24 @@ agents:
109114
timeout: 600000
110115
```
111116
112-
**CLI.** Four commands:
117+
**CLI.** Six commands:
113118
114119
```bash
115-
ahi init # scaffold the folder structure
116-
ahi dev # run an agent locally
117-
ahi sync # diff local vs remote, upload only what changed
120+
ahi init # scaffold the folder structure
121+
ahi dev "prompt" # run an agent locally
122+
ahi sync # push files, env, setup, and schedules to the box
123+
ahi run "prompt" # run an agent remotely, stream output back
124+
ahi pull # download agent's data/ to local
125+
ahi push # upload local data/ to the box
118126
```
119127

120128
There's no deploy step. Each primitive has its own lifecycle:
121129

122130
- Fix a bug in a tool — `ahi sync`. Only that file uploads.
123131
- Rewrite the agent's strategy — update SKILL.md, run `ahi sync`. Same tools, same data, new behavior.
124132
- Switch from Claude to Gemini — change the model in `ahi.yaml`, run `ahi sync`. Tools, skills, and data stay untouched.
133+
- Inspect what the agent wrote — `ahi pull`. The data folder downloads to your local project.
134+
- Seed initial state — `ahi push`. Upload local data files to the box.
125135
- The agent writes its own data — you never touch it. It survives every update above.
126136

127137
No build step, no container image, no CI pipeline. Your local folder is the source of truth.
@@ -138,8 +148,10 @@ No build step, no container image, no CI pipeline. Your local folder is the sour
138148
```bash
139149
npm install -g @upstash/ahi
140150
ahi init
151+
cp .env.example .env # add your API keys
141152
ahi dev "do something useful"
142153
ahi sync
154+
ahi run "do something useful"
143155
```
144156

145157
- [Ahi on GitHub](https://github.com/upstash/ahi)
File renamed without changes.
360 KB
Loading
File renamed without changes.
134 KB
Loading

0 commit comments

Comments
 (0)