@sulala/agent-os 0.1.18 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,31 @@
1
- # Agent OS
1
+ # Sulala Agent OS
2
2
 
3
- Lightweight **Bun-based Agent Operating System** — micro-agents, installable skills, workflows.
3
+ Lightweight **Bun-based Agent Operating System** — micro-agents, installable skills, workflows, and a web dashboard.
4
4
 
5
- ## Quick start
5
+ ## Install
6
+
7
+ **From npm (Bun or Node 18+):**
8
+
9
+ ```bash
10
+ bun add -g @sulala/agent-os
11
+ # or: npm install -g @sulala/agent-os
12
+ ```
13
+
14
+ **One-line install (macOS & Linux):**
15
+
16
+ ```bash
17
+ curl -fsSL --proto '=https' --tlsv1.2 https://sulala.ai/install.sh | bash
18
+ ```
19
+
20
+ **Windows (PowerShell):**
21
+
22
+ ```powershell
23
+ irm -useb https://sulala.ai/install.ps1 | iex
24
+ ```
25
+
26
+ After install, run `sulala onboard` to create config, seed agents, and open the dashboard. The installer prints a **dashboard login token** — copy it to log in at `http://127.0.0.1:3010`.
27
+
28
+ ## Quick start (from source)
6
29
 
7
30
  ```bash
8
31
  # Install deps
@@ -11,7 +34,7 @@ bun install
11
34
  # For dev, agents are loaded from ./data/agents (pre-configured).
12
35
  # For production, copy to ~/.agent-os/agents/ or set AGENT_OS_AGENTS_DIR.
13
36
 
14
- # Set LLM API key (OpenAI or OpenRouter)
37
+ # Set LLM API key (OpenAI, OpenRouter, Anthropic, or Google — or add in Dashboard → Settings)
15
38
  export OPENAI_API_KEY=sk-...
16
39
  # or: export OPENROUTER_API_KEY=sk-or-...
17
40
 
@@ -19,19 +42,72 @@ export OPENAI_API_KEY=sk-...
19
42
  bun run dev
20
43
  ```
21
44
 
22
- Then:
45
+ Then open **http://127.0.0.1:3010** for the dashboard. If the dashboard isn’t built yet, run from package root:
46
+
47
+ ```bash
48
+ cd dashboard && npm install && npm run build && cd ..
49
+ ```
50
+
51
+ Then restart `bun run dev`.
52
+
53
+ ## Dashboard
54
+
55
+ The web UI at **http://127.0.0.1:3010** (or your `PORT`) lets you:
56
+
57
+ - **Agents** — Create, edit, and run agents
58
+ - **Chat** — Talk to an agent with streaming and attachments
59
+ - **Graphs** — Multi-agent workflows
60
+ - **Skills** — Install and configure skills from the marketplace
61
+ - **Schedules** — Cron-style runs
62
+ - **Memory** — View and search agent memory
63
+ - **Settings** — AI provider keys, Telegram/Slack/Discord/Viber, and dashboard access
64
+
65
+ ### Dashboard access (gateway token)
66
+
67
+ The server protects the dashboard with a **gateway token** (stored in `~/.agent-os/config.json` or set via `DASHBOARD_SECRET`). To get or regenerate it:
68
+
69
+ ```bash
70
+ # View current token (copy and paste in the dashboard login)
71
+ sulala dashboard-token
72
+
73
+ # Generate a new token (then restart the server)
74
+ sulala dashboard-token --regenerate
75
+ ```
76
+
77
+ After `sulala onboard`, the token is printed in the terminal — copy it to log in. You can also regenerate the token from **Settings → Dashboard access** in the dashboard (restart the server for the new token to take effect).
78
+
79
+ ## CLI
80
+
81
+ When installed globally, the `sulala` CLI is available:
82
+
83
+ | Command | Description |
84
+ |--------|-------------|
85
+ | `sulala start` | Start the server (foreground) |
86
+ | `sulala start --daemon` | Start the server in the background |
87
+ | `sulala stop` | Stop the daemon (macOS/Linux) |
88
+ | `sulala onboard` | First-time setup: create config, seed agents, open dashboard |
89
+ | `sulala dashboard-token` | Show the dashboard login token |
90
+ | `sulala dashboard-token --regenerate` | Generate a new token (restart server after) |
91
+ | `sulala run <agent_id> <task>` | Run an agent with a one-off task |
92
+ | `sulala update` | Update package and system agents/skills |
93
+ | `sulala version` | Show version |
94
+
95
+ Example:
96
+
97
+ ```bash
98
+ sulala run echo_agent "What is 2+2?"
99
+ ```
100
+
101
+ ## HTTP API
23
102
 
24
103
  ```bash
25
104
  # List agents
26
105
  curl http://127.0.0.1:3010/api/agents
27
106
 
28
- # Run agent (HTTP)
107
+ # Run agent (HTTP). If the server uses a gateway token, add: -H "Authorization: Bearer <token>"
29
108
  curl -X POST http://127.0.0.1:3010/api/agents/run \
30
109
  -H "Content-Type: application/json" \
31
110
  -d '{"agent_id":"echo_agent","task":"Hello, what can you do?"}'
32
-
33
- # Or run from CLI
34
- AGENT_OS_AGENTS_DIR=./data/agents bun run cli echo_agent "What is 2+2?"
35
111
  ```
36
112
 
37
113
  ## Configuration
@@ -40,25 +116,37 @@ AGENT_OS_AGENTS_DIR=./data/agents bun run cli echo_agent "What is 2+2?"
40
116
  |-----|-------------|
41
117
  | `PORT` | Server port (default: 3010) |
42
118
  | `HOST` | Server host (default: 127.0.0.1) |
119
+ | `AGENT_OS_HOME` | Config and data directory (default: ~/.agent-os) |
120
+ | `DASHBOARD_SECRET` | Optional. Dashboard gateway token; if unset, a token is auto-generated and stored in config. View or regenerate: `sulala dashboard-token` |
43
121
  | `OPENAI_API_KEY` | OpenAI API key |
44
- | `OPENROUTER_API_KEY` | OpenRouter API key (alternative) |
122
+ | `ANTHROPIC_API_KEY` | Anthropic API key |
123
+ | `GOOGLE_API_KEY` | Google AI API key |
124
+ | `OPENROUTER_API_KEY` | OpenRouter API key |
45
125
  | `AGENT_OS_AGENTS_DIR` | Override agents directory (default: ~/.agent-os/agents/) |
126
+ | `AGENT_MEMORY_DB_PATH` | SQLite path for memory (default: ~/.agent-os/database.db) |
127
+
128
+ API keys can also be set in **Dashboard → Settings → AI Provider** and are stored in `~/.agent-os/config.json`.
46
129
 
47
130
  ## Project structure
48
131
 
49
132
  ```
50
- tinyagent/
133
+ sulala/
51
134
  src/
52
- core/ # Agent registry, runtime, LLM, tools
53
- types/ # Agent config schema
54
- server.ts # HTTP API
135
+ core/ # Agent registry, runtime, LLM, config
136
+ http/ # API handlers, channels (Telegram, Slack, etc.)
137
+ skills/ # Skill loader, tools
138
+ tools/ # Built-in tools (exec, run-agent, etc.)
139
+ server.ts # HTTP API + dashboard static
140
+ cli.ts # sulala CLI
55
141
  index.ts # Entry point
56
- examples/ # Example agent configs
57
- skills/ # Example skills (weather, etc.)
58
- docs/ # Specs (AGENT_SPEC, SKILL_SPEC, etc.)
142
+ dashboard/ # Vite + React dashboard (build → dashboard-dist)
143
+ data/ # Agents, skills, templates
144
+ install.sh # One-line install (macOS/Linux)
145
+ install.ps1 # One-line install (Windows)
146
+ docs/ # Specs and setup guides
59
147
  ```
60
148
 
61
- ## Built-in tools (Phase 2)
149
+ ## Built-in tools
62
150
 
63
151
  | Tool | Description |
64
152
  |--------|---------------------------|
@@ -67,7 +155,7 @@ tinyagent/
67
155
 
68
156
  Agents get all tools by default. Restrict via `tools: ["echo"]` in agent config.
69
157
 
70
- ## Skills (Phase 3)
158
+ ## Skills
71
159
 
72
160
  Skills live under `~/.agent-os/skills/<name>/` (or `AGENT_OS_SKILLS_DIR`). Example:
73
161
 
@@ -77,26 +165,12 @@ Skills live under `~/.agent-os/skills/<name>/` (or `AGENT_OS_SKILLS_DIR`). Examp
77
165
  tools.yaml
78
166
  ```
79
167
 
80
- Agents declare skills:
81
-
82
- ```json
83
- {
84
- "id": "weather_agent",
85
- "name": "Weather Assistant",
86
- "model": "gpt-4o-mini",
87
- "skills": ["weather"],
88
- "tools": ["weather_current"]
89
- }
90
- ```
168
+ Agents declare skills in their config; install default skills from the **Dashboard → Skills** marketplace. The skill loader reads `tools.yaml` and registers HTTP tools into the tool registry.
91
169
 
92
- At runtime, the skill loader reads `tools.yaml` and registers HTTP tools into the tool registry.
170
+ ## Channels (Telegram, Slack, Discord, …)
93
171
 
94
- ## Channels (Telegram)
95
-
96
- You can talk to your agent from Telegram. Create a bot with [@BotFather](https://t.me/BotFather), add the token and default agent in **Dashboard → Settings → Telegram**, expose your server over HTTPS (e.g. ngrok), and set the webhook. Full steps: [doc/TELEGRAM_SETUP.md](doc/TELEGRAM_SETUP.md).
172
+ You can talk to your agent from Telegram, Slack, Discord, Signal, or Viber. Create a bot (e.g. [@BotFather](https://t.me/BotFather) for Telegram), add the token and default agent in **Dashboard → Settings**, expose your server over HTTPS (e.g. ngrok), and set the webhook. Full steps for Telegram: [doc/TELEGRAM_SETUP.md](doc/TELEGRAM_SETUP.md) (if present).
97
173
 
98
174
  ## Roadmap
99
175
 
100
- See [roadmap.md](./roadmap.md) for phases. Phases 1–3 (Core Runtime, Tool System, Skill System) are implemented at a minimal level.
101
-
102
- # sulala
176
+ See [roadmap.md](./roadmap.md) for phases. Phases 1–3 (Core Runtime, Tool System, Skill System) are implemented; dashboard, gateway auth, and channels are in place.