An AI-native runtime where every capability is a markdown document. One interface for every tool. Up to 99% fewer tokens, ~50% fewer task errors.
npm install -g @string-os/string Every tool an AI agent uses today has its own interface — REST APIs need endpoint URLs and JSON schemas, MCP servers need protocol negotiation, CLI tools need argument parsing. Each integration is a code project.
String makes every capability a markdown file. The agent reads it the same way it reads a webpage. Actions live inline. Navigation is by link. State is scoped per app. New capability = new markdown file. No host config. No restart. Same interface in any agent.
https://string-os.org/skill.md ---
title: String — Install Skill
---
# Install String
This document tells you how to install and start using String.
## 1. Install
```bash
npm install -g @string-os/string
```
## 2. Start the daemon
```bash
string --daemon start
```
## 3. Install an app
```bash
string file:setup '/install --app ./apps/weather/string.md'
```
## 4. Use it
```bash
string app:weather '/act.now --city Seoul'
``` npm install -g @string-os/string/act.<name> on any app — same interface every time50 lines of markdown. Read it, fork it, audit it, edit it. The agent reads the same file you do.
---
name: weather
type: app
default: now
---
# Weather
```act.now
GET https://wttr.in/{city}?format=%l:+%c+%t
city, -c: string (required) "City name"
```
```act.forecast
GET https://wttr.in/{city}?format=j1
city: string (required) "City name"
days: number (optional) "Days to forecast" = "3"
``` $ string app:weather '/act.now --city Seoul'
<𝒞=string:app:weather>
Seoul: ☀️ +23°C
</𝒞>
$ string app:weather '/act.forecast --city Tokyo --days 5'
<𝒞=string:app:weather>
Tokyo, 5-day forecast:
Mon: ☀️ +28°C
Tue: 🌤 +27°C
Wed: 🌧 +22°C
Thu: ⛅ +25°C
Fri: ☀️ +29°C
</𝒞> Numbers from early benchmarks comparing equivalent task completion across MCP, function calling, and String. Detailed methodology in the docs.
The web works because pages link to pages. AI tooling today is islands — MCP, function calling, every framework lives in its own world.
String unifies them with two verbs an agent already knows:
/open any document, /act on any capability.
Responses contain links. Links open more documents. Capabilities compose
the same way pages do.
That's the whole game.
npm install -g @string-os/string
string --daemon start
string file:setup '/install --app ./apps/weather/string.md'