agentlas 1.0.18 → 1.0.19
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/CHANGELOG.md +19 -0
- package/README.md +188 -279
- package/engine/agents/router.cjs +111 -490
- package/engine/bootstrap-schema.sql +23 -21
- package/engine/commands/run.cjs +23 -34
- package/engine/project/controller.cjs +113 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,402 +9,311 @@
|
|
|
9
9
|
╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
**Agentlas
|
|
13
|
-
하나로 도는 독립 에이전트 터미널. 설치된 AI 에이전트·팀과 대화하고, 새로 만들고,
|
|
14
|
-
멀티세션으로 굴린다. 데스크탑 앱이 없어도 동작하며, 앱이 깔려 있으면 같은
|
|
15
|
-
SQLite(userData)를 공유해 에이전트·대화·자동화가 양쪽에서 그대로 보인다.
|
|
16
|
-
모델은 당신 것을 쓴다 — Claude Code / Codex / Gemini CLI 구독 또는 BYOK API 키.
|
|
12
|
+
**Agentlas Terminal CLI** — Independent AI agent runtime installed via `npm install -g agentlas` and launched with `agentlas`. Run exact installed agents, teams, and parallel sessions directly from your shell without keeping Desktop open. When Desktop is installed, Terminal reads the same local project, agent, and runtime state. Bring your own model — use your existing Claude Code, Codex, or Gemini CLI subscriptions or BYOK API keys.
|
|
17
13
|
|
|
18
14
|
> **We are Agent Trust. Your agent is not a program. It is an asset. — Agentlas —**
|
|
19
15
|
|
|
20
|
-
Agent Trust
|
|
21
|
-
다룬다는 **제품 원칙**이다. 금융·법률상 신탁(trust) 서비스를 뜻하지 않는다.
|
|
22
|
-
Agent Cloud는 소유한 패키지를 보관하고, 이 터미널은 그 로컬 실행 사본을 지원
|
|
23
|
-
런타임으로 검증·실행한다.
|
|
16
|
+
Agent Trust is our product principle: agent packages are treated as portable, owner-scoped, inspectable, and restorable assets. (It does not imply regulated financial or fiduciary services.) Agent Cloud stores package assets in your private cloud account, while Agentlas Terminal verifies and executes local runtime copies on your host machine.
|
|
24
17
|
|
|
25
18
|
---
|
|
26
19
|
|
|
27
|
-
##
|
|
20
|
+
## Requirements
|
|
28
21
|
|
|
29
|
-
|
|
|
22
|
+
| Category | Requirement |
|
|
30
23
|
| --- | --- |
|
|
31
|
-
| Node | **22+
|
|
32
|
-
|
|
|
33
|
-
| OS | macOS
|
|
24
|
+
| **Node.js** | **Node 22+ recommended.** `package.json` specifies `engines: ">=20"`, but if native optional dependency `better-sqlite3` build fails, the launcher falls back strictly to `node:sqlite` in Node 22+. Node 20 works when `better-sqlite3` native build succeeds. |
|
|
25
|
+
| **Agent CLI** | Requires at least one supported runtime CLI (`claude`, `codex`, or `gemini`) in your `PATH`. Halts honestly with `no_runtime` if none are found (no fake model responses). |
|
|
26
|
+
| **OS** | macOS is verified by the current local release gate. Linux is covered by the public adapter/CI contract. A Windows launcher is provided, but this release does not claim independent end-to-end Windows verification. |
|
|
34
27
|
|
|
35
|
-
`kimi
|
|
36
|
-
(`engine/runtimes/resolve.cjs`의 `EXECUTABLE_KINDS = claude-code, codex, gemini`).
|
|
37
|
-
`doctor`가 이들을 "감지됨"으로 표시해도 `--runtime`으로 지정하면
|
|
38
|
-
`has no v2 streaming driver yet`으로 거절한다.
|
|
28
|
+
*Note: `kimi`, `grok`, and `cursor-agent` are detected by diagnostics (`doctor`) but not yet executable (`has no v2 streaming driver yet`). Supported active runtimes are `claude-code`, `codex`, and `gemini`.*
|
|
39
29
|
|
|
40
|
-
##
|
|
30
|
+
## Installation
|
|
41
31
|
|
|
42
32
|
```sh
|
|
43
33
|
npm install -g agentlas
|
|
44
|
-
#
|
|
45
|
-
#
|
|
46
|
-
#
|
|
34
|
+
# Or from local source: npm install -g .
|
|
35
|
+
# Or via shell installer: sh install.sh # Symlinks to ~/.local/bin/agentlas (no sudo needed)
|
|
36
|
+
# Or with custom prefix: sh install.sh --prefix /usr/local/bin
|
|
47
37
|
```
|
|
48
38
|
|
|
49
|
-
Windows(
|
|
39
|
+
Windows (launcher available; end-to-end release not independently verified): `powershell -ExecutionPolicy Bypass -File install.ps1`
|
|
50
40
|
|
|
51
|
-
##
|
|
41
|
+
## Quick Start
|
|
52
42
|
|
|
53
43
|
```sh
|
|
54
44
|
agentlas
|
|
55
45
|
```
|
|
56
46
|
|
|
57
|
-
**1.
|
|
58
|
-
(`auto` 또는 설치된 CLI) → 기본 권한(read/write/full). 결과는 `cli-prefs.json`에
|
|
59
|
-
저장되고, 언제든 `agentlas setup`으로 다시 돌린다. 같은 실행에서 데이터 폴더가
|
|
60
|
-
없으면 데스크탑과 동일한 스키마로 SQLite를 부트스트랩하고 빌트인 에이전트
|
|
61
|
-
(오케스트레이터·PM 소울·메모리 큐레이터 등)를 시드한다.
|
|
47
|
+
**1. Interactive Onboarding Wizard** — On first TTY execution, a 3-step setup guides you through language selection, default runtime preference (`auto` or installed CLI), and default permission level (`read`/`write`/`full`). Settings are saved in `cli-prefs.json` and re-configurable via `agentlas setup`. If no local database exists, it bootstraps SQLite with Desktop-compatible schemas and seeds built-in agents (Orchestrator, PM Soul, Memory Curator).
|
|
62
48
|
|
|
63
|
-
**2.
|
|
49
|
+
**2. Single Task Execution**
|
|
64
50
|
|
|
65
51
|
```sh
|
|
66
|
-
agentlas "
|
|
67
|
-
agentlas run -p "
|
|
68
|
-
git log --oneline -20 | agentlas run
|
|
69
|
-
agentlas <agent>
|
|
70
|
-
agentlas
|
|
52
|
+
agentlas "Identify why repository tests are failing" # Uses the connected project's first agent as controller
|
|
53
|
+
agentlas run -p "Summarize the last 3 CHANGELOG entries" # Prints the project controller's final answer to stdout
|
|
54
|
+
git log --oneline -20 | agentlas run # Reads stdin; still requires a connected project
|
|
55
|
+
agentlas run <agent> "Advanced direct request" # Exact-agent direct invocation; no project substitution
|
|
56
|
+
agentlas <agent> # Starts an interactive REPL with an exact agent
|
|
57
|
+
agentlas firm <firm> "Request" # Delegates to an exact firm CEO
|
|
71
58
|
```
|
|
72
59
|
|
|
73
|
-
|
|
74
|
-
하지 않는다. 판정 런타임이 없으면 기본 에이전트로 폴백하되 그 사실을 stderr에
|
|
75
|
-
반드시 남긴다(조용한 오라우팅 금지).
|
|
60
|
+
Ordinary one-shot work is project-first: run it inside a folder connected to a Desktop Work project. The first agent in that project's ordered pool owns the task; remaining members are eligible task-scoped sub-agents. Missing projects, empty teams, and unavailable controllers stop without substituting another agent. The separate `agentlas route` preview is model-judged and stays unresolved when no exact installed agent can be justified.
|
|
76
61
|
|
|
77
|
-
**3.
|
|
62
|
+
**3. Resuming & Managing Conversations**
|
|
78
63
|
|
|
79
64
|
```sh
|
|
80
|
-
agentlas chats #
|
|
81
|
-
agentlas chats 30
|
|
82
|
-
agentlas open <chat-id> #
|
|
65
|
+
agentlas chats # List recent conversations (shares SQLite DB with Desktop app)
|
|
66
|
+
agentlas chats 30 # List last 30 conversations
|
|
67
|
+
agentlas open <chat-id> # Re-open REPL with the chat's assigned agent
|
|
83
68
|
```
|
|
84
69
|
|
|
85
|
-
##
|
|
70
|
+
## Command Reference
|
|
86
71
|
|
|
87
|
-
`agentlas help
|
|
72
|
+
Run `agentlas help` for the authoritative command list. Below is the organized command structure:
|
|
88
73
|
|
|
89
74
|
### TALK & RUN
|
|
90
75
|
```sh
|
|
91
|
-
agentlas <agent> #
|
|
76
|
+
agentlas <agent> # Chat with agent (equivalent to chat <agent>)
|
|
92
77
|
agentlas chat <agent>
|
|
93
|
-
agentlas run [agent] [prompt] #
|
|
94
|
-
agentlas firm <firm> [task] #
|
|
95
|
-
agentlas chats [n] #
|
|
96
|
-
agentlas open <chat-id> #
|
|
97
|
-
agentlas cd <agent> #
|
|
78
|
+
agentlas run [agent] [prompt] # Single-run execution (-p, --runtime, --permission, stdin)
|
|
79
|
+
agentlas firm <firm> [task] # Delegate task to firm CEO
|
|
80
|
+
agentlas chats [n] # List recent chat conversations
|
|
81
|
+
agentlas open <chat-id> # Resume conversation by ID
|
|
82
|
+
agentlas cd <agent> # Print folder path of an agent (cd "$(agentlas cd x)")
|
|
98
83
|
```
|
|
99
84
|
|
|
100
85
|
### AGENTS & HUB
|
|
101
86
|
```sh
|
|
102
|
-
agentlas search "
|
|
103
|
-
agentlas install <slug> # Hub
|
|
104
|
-
agentlas plugin add <slug> # Hub
|
|
105
|
-
agentlas plugin list # (= agentlas plugins)
|
|
106
|
-
agentlas build "
|
|
107
|
-
agentlas upload
|
|
108
|
-
agentlas upload
|
|
109
|
-
agentlas connect <sub> #
|
|
110
|
-
agentlas import
|
|
111
|
-
agentlas native prepare <agent> #
|
|
112
|
-
agentlas list #
|
|
113
|
-
agentlas uninstall <agent> [--yes]
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
agentlas experience <sub> # list|inspect|validate|save|publish|status|export|unpublish|withdraw
|
|
117
|
-
agentlas variant resolve --base-release <id> # 로컬 variant 호환성 프리뷰 (권위 없음, `agentlas variant help`)
|
|
87
|
+
agentlas search "<query>" # Search Hub agents (no login required)
|
|
88
|
+
agentlas install <slug> # Install Hub agent locally (gated by security trust checks)
|
|
89
|
+
agentlas plugin add <slug> # Add Hub plugin (MCP server)
|
|
90
|
+
agentlas plugin list # List active plugins (= agentlas plugins)
|
|
91
|
+
agentlas build "<prompt>" # Build, repair, and package agents or multi-agent teams
|
|
92
|
+
agentlas upload <path> # Upload package to private Agent Cloud (default)
|
|
93
|
+
agentlas upload <path> --visibility marketplace # Explicitly publish to public Agentlas Hub
|
|
94
|
+
agentlas connect <sub> # Connect external platforms (e.g. Telegram)
|
|
95
|
+
agentlas import <folder> # Import local agent or firm directory
|
|
96
|
+
agentlas native prepare <agent> # Generate native CLI context files
|
|
97
|
+
agentlas list # List installed agents/firms and active runtimes
|
|
98
|
+
agentlas uninstall <agent> [--yes] # Remove an installed agent (fails if chat history exists unless --yes)
|
|
99
|
+
agentlas experience <sub> # Manage agent experience (list|inspect|validate|save|publish|status|export|unpublish|withdraw)
|
|
100
|
+
agentlas variant resolve --base-release <id> # Preview local variant compatibility
|
|
118
101
|
```
|
|
119
102
|
|
|
120
103
|
### EXECUTE
|
|
121
104
|
```sh
|
|
122
|
-
agentlas storm "
|
|
123
|
-
agentlas swarm "
|
|
124
|
-
agentlas workforce "
|
|
125
|
-
agentlas network "
|
|
126
|
-
agentlas taskforce "
|
|
127
|
-
agentlas legacy-network "
|
|
128
|
-
agentlas call "a,b" "
|
|
129
|
-
agentlas browser [...] #
|
|
130
|
-
agentlas route "
|
|
131
|
-
agentlas research <sub> # status|gather|search|read|plan
|
|
105
|
+
agentlas storm "<goal>" # Goal + UltraCode harness: plan -> assign -> execute -> verify [--research]
|
|
106
|
+
agentlas swarm "<goal>" # Emergent multi-agent swarm [--parallel N]
|
|
107
|
+
agentlas workforce "<prompt>" # Route through Agent Workforce Ontology
|
|
108
|
+
agentlas network "<prompt>" # Alias for workforce
|
|
109
|
+
agentlas taskforce "<prompt>" # Alias for workforce
|
|
110
|
+
agentlas legacy-network "<prompt>" # Legacy Hephaestus solver (explicit invocation only)
|
|
111
|
+
agentlas call "a,b" "<context>" # Call explicitly named Hub or Cloud agents
|
|
112
|
+
agentlas browser [...] # Real browser hardpoint launcher
|
|
113
|
+
agentlas route "<prompt>" [--json] # Preview routing decisions without execution
|
|
114
|
+
agentlas research <sub> # Research loadout (status|gather|search|read|plan)
|
|
132
115
|
```
|
|
133
116
|
|
|
134
117
|
### KNOWLEDGE
|
|
135
118
|
```sh
|
|
136
|
-
agentlas memory import
|
|
119
|
+
agentlas memory import <path> --agent <id> [--apply]
|
|
137
120
|
agentlas evolve [list|apply <id>|revert <id>]
|
|
138
|
-
agentlas ontology <sub> # status|list|add
|
|
139
|
-
agentlas career-graph <sub> #
|
|
140
|
-
agentlas journal <sub> # status|verify|repair|gate
|
|
141
|
-
agentlas project [status|init] # `.agentlas/`
|
|
142
|
-
agentlas context <sub> # refresh|locate|refs|slice|impact|verify
|
|
121
|
+
agentlas ontology <sub> # Manage project ontology (status|list|add)
|
|
122
|
+
agentlas career-graph <sub> # Ingest, query, verify, and trace career graph indices
|
|
123
|
+
agentlas journal <sub> # Run journal operations (status|verify|repair|gate)
|
|
124
|
+
agentlas project [status|init] # Explicit entry point to initialize `.agentlas/` context
|
|
125
|
+
agentlas context <sub> # Context slice operations (refresh|locate|refs|slice|impact|verify)
|
|
143
126
|
```
|
|
144
127
|
|
|
145
|
-
`agentlas project init
|
|
146
|
-
Stormbreaker·Workforce가 같은 로컬 Context Slice를 받는다. 읽기·쓰기·전체 권한만
|
|
147
|
-
으로는 `.agentlas/`나 `.gitignore`를 만들거나 고치지 않는다. Hub/Cloud 검색에는
|
|
148
|
-
코드맵·소스 경로·프로젝트 파일 내용이 전송되지 않는다.
|
|
128
|
+
Only in projects explicitly initialized with `agentlas project init` do single runs, team executions, Stormbreaker, and Workforce receive local Context Slices. Read, write, or full permissions do not create or alter `.agentlas/` or `.gitignore` files. Code maps, source paths, and file contents are never transmitted during Hub/Cloud search.
|
|
149
129
|
|
|
150
130
|
### ACCOUNT & OPS
|
|
151
131
|
```sh
|
|
152
|
-
agentlas login | logout | whoami # Agentlas Cloud
|
|
153
|
-
agentlas billing #
|
|
154
|
-
agentlas cloud <sub> # save|publish|package|list|restore|delete|search|install
|
|
155
|
-
|
|
156
|
-
agentlas automation <sub> # list|add|on|off|remove|run <id>|runs|daemon
|
|
132
|
+
agentlas login | logout | whoami # Agentlas Cloud authentication (loopback browser flow)
|
|
133
|
+
agentlas billing # Check account credit balance
|
|
134
|
+
agentlas cloud <sub> # Manage private Agent Cloud packages (save|publish|package|list|restore|delete|search|install|security scan|runtime bundle|field-test)
|
|
135
|
+
agentlas automation <sub> # Scheduled automations (list|add|on|off|remove|run <id>|runs|daemon)
|
|
157
136
|
agentlas creds save --provider <n> --key <ENV> --value <v>
|
|
158
|
-
agentlas creds file --source
|
|
159
|
-
agentlas env #
|
|
160
|
-
agentlas usage #
|
|
161
|
-
agentlas telegram #
|
|
162
|
-
agentlas mcp # MCP
|
|
163
|
-
agentlas mcp probe <id> # initialize
|
|
164
|
-
agentlas multimodal #
|
|
165
|
-
agentlas doctor #
|
|
166
|
-
agentlas setup #
|
|
167
|
-
agentlas update #
|
|
168
|
-
agentlas oberon <sub> # AI
|
|
169
|
-
agentlas hep <sub
|
|
170
|
-
agentlas netadmin <sub> #
|
|
137
|
+
agentlas creds file --source <path> [--env <ENV>] # Imports credentials (values never logged)
|
|
138
|
+
agentlas env # List shared environment variable keys (values hidden)
|
|
139
|
+
agentlas usage # Local usage statistics
|
|
140
|
+
agentlas telegram # Telegram binding status (read-only)
|
|
141
|
+
agentlas mcp # List configured MCP servers
|
|
142
|
+
agentlas mcp probe <id> # Check initialize -> tools/list handshake
|
|
143
|
+
agentlas multimodal # Configure provider settings for image/video/audio
|
|
144
|
+
agentlas doctor # Runtime, database, and session diagnostics
|
|
145
|
+
agentlas setup # Re-run first-time onboarding setup wizard (TTY required)
|
|
146
|
+
agentlas update # Check for latest package updates on npm
|
|
147
|
+
agentlas oberon <sub> # AI film rendering pipeline: scaffold|render|list|open (= agentlas film)
|
|
148
|
+
agentlas hep <sub...> # Native Hephaestus passthrough
|
|
149
|
+
agentlas netadmin <sub> # Local network administration (init|status|reindex|bench|add-source)
|
|
171
150
|
agentlas version | help
|
|
172
151
|
```
|
|
173
152
|
|
|
174
|
-
|
|
175
|
-
`--permission read|write|full`
|
|
153
|
+
Common flags across subcommands: `-p|--print`, `--runtime claude-code|codex|gemini`, `--permission read|write|full`.
|
|
176
154
|
|
|
177
|
-
###
|
|
155
|
+
### Typo Guard & Desktop Surface Redirection
|
|
178
156
|
|
|
179
|
-
|
|
180
|
-
모델을 부르지 않는다. 편집거리로 가장 가까운 명령을 최대 3개 제안하고 exit 1로
|
|
181
|
-
멈춘다.
|
|
157
|
+
If a single non-flag word is entered that does not match a valid command or installed agent slug, Agentlas halts with exit code 1 instead of sending the mistyped command to an LLM:
|
|
182
158
|
|
|
183
159
|
```
|
|
184
160
|
$ agentlas lst
|
|
185
|
-
'lst'
|
|
186
|
-
|
|
161
|
+
'lst' is not an agentlas command. Did you mean: list
|
|
162
|
+
Command list: agentlas help · To run this exact prompt: agentlas run -p "lst"
|
|
187
163
|
```
|
|
188
164
|
|
|
189
|
-
|
|
190
|
-
`library` `groups` `settings` `apps` `quests` `bookmarks` `one` …)도 같은 방식으로
|
|
191
|
-
멈추고 터미널 대체 경로를 안내한다. 진짜 그 단어를 작업으로 돌리려면 따옴표로
|
|
192
|
-
감싸거나 `run -p`를 쓴다.
|
|
165
|
+
Desktop-only surface names (`site`, `trex`, `prompts`, `dashboard`, `marketplace`, `library`, `groups`, `settings`, `apps`, `quests`, `bookmarks`, `one`) also halt with typo guard guidance directing you to equivalent terminal commands. To run a single word as a prompt, wrap it in quotes or pass `run -p`.
|
|
193
166
|
|
|
194
|
-
###
|
|
167
|
+
### Permission Levels
|
|
195
168
|
|
|
196
|
-
| Agentlas
|
|
169
|
+
| Agentlas Level | Claude Code | Codex | Gemini CLI |
|
|
197
170
|
| --- | --- | --- | --- |
|
|
198
171
|
| `read` | `plan` | `read-only` sandbox | `plan` |
|
|
199
172
|
| `write` | `acceptEdits` | `workspace-write` sandbox | `auto_edit` |
|
|
200
|
-
| `full` | permission
|
|
173
|
+
| `full` | bypass permission prompts | approval + sandbox bypass | `yolo` |
|
|
201
174
|
|
|
202
|
-
|
|
203
|
-
REPL의 `!<셸명령>`은 작업 공간 경계를 강제할 수 없어 **`full`에서만** 실행되며,
|
|
204
|
-
출력 8MB 캡·표시 전 시크릿 마스킹·프로세스 그룹 종료가 걸린다.
|
|
175
|
+
*Note: Saved `full` permission is session-bound and automatically fails closed to `write` on subsequent executions. REPL shell execution (`!<command>`) runs strictly under `full` permission, enforced with 8MB output capping, secret masking, and process-group termination.*
|
|
205
176
|
|
|
206
|
-
## REPL & Orca
|
|
177
|
+
## REPL & Orca Multi-Session Architecture
|
|
207
178
|
|
|
208
|
-
`agentlas
|
|
209
|
-
`/spawn`으로 만든 서브에이전트는 백그라운드 세션으로 병렬로 돈다. 화면은 활성
|
|
210
|
-
세션 하나만 스트리밍하고, 백그라운드 턴 종료는 한 줄 알림으로 뜬다.
|
|
179
|
+
Executing `agentlas` with no arguments starts an interactive REPL session. Foreground execution turns run inside an active session, while subagents created via `/spawn` execute concurrently in background sessions. The terminal streams output from the currently focused active session and displays one-line notices when background tasks finish.
|
|
211
180
|
|
|
212
|
-
###
|
|
181
|
+
### REPL Slash Commands
|
|
213
182
|
|
|
214
|
-
|
|
|
183
|
+
| Command | Action |
|
|
215
184
|
| --- | --- |
|
|
216
|
-
| `/help` |
|
|
217
|
-
| `/sessions` · `/tree` |
|
|
218
|
-
| `/s <n>` · `/switch <n>` |
|
|
219
|
-
| `/spawn <agent> [task]` |
|
|
220
|
-
| `/steer <n> <msg>` |
|
|
221
|
-
| `/kill <n>` |
|
|
222
|
-
| `/rm <n>` |
|
|
223
|
-
| `/broadcast <msg>` |
|
|
224
|
-
| `/use <agent>` |
|
|
225
|
-
| `/agents` · `/list` |
|
|
226
|
-
| `/chats [n]` |
|
|
227
|
-
| `/mcp` | MCP
|
|
228
|
-
| `/doctor` |
|
|
229
|
-
| `/runtime <kind>` |
|
|
230
|
-
| `/permission <level>` |
|
|
231
|
-
| `/quit` · `/exit` |
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
| 입력 | 동작 |
|
|
185
|
+
| `/help` | Display available commands and keybindings |
|
|
186
|
+
| `/sessions` · `/tree` | View session table or parent-child process tree |
|
|
187
|
+
| `/s <n>` · `/switch <n>` | Switch active session (replays tail logs & subscribes to live stream) |
|
|
188
|
+
| `/spawn <agent> [task]` | Spawn subagent background session (executes task immediately if supplied) |
|
|
189
|
+
| `/steer <n> <msg>` | Queue instruction for session `n`'s next turn |
|
|
190
|
+
| `/kill <n>` | Interrupt active turn in session `n` |
|
|
191
|
+
| `/rm <n>` | Remove session `n` |
|
|
192
|
+
| `/broadcast <msg>` | Broadcast instruction to all running sessions |
|
|
193
|
+
| `/use <agent>` | Change active agent in main session |
|
|
194
|
+
| `/agents` · `/list` | List installed agents |
|
|
195
|
+
| `/chats [n]` | View recent conversations |
|
|
196
|
+
| `/mcp` | List active MCP servers |
|
|
197
|
+
| `/doctor` | Run runtime & database diagnostics |
|
|
198
|
+
| `/runtime <kind>` | Set runtime for new sessions (`claude-code` \| `codex` \| `gemini`) |
|
|
199
|
+
| `/permission <level>` | Set permission level for new sessions (`read` \| `write` \| `full`) |
|
|
200
|
+
| `/quit` · `/exit` | Exit REPL |
|
|
201
|
+
|
|
202
|
+
Unrecognized slash commands halt with `unknown: /xxx (see /help)`.
|
|
203
|
+
|
|
204
|
+
### Controls & Input Shortcuts
|
|
205
|
+
|
|
206
|
+
| Input | Behavior |
|
|
239
207
|
| --- | --- |
|
|
240
|
-
|
|
|
241
|
-
| `
|
|
242
|
-
| `
|
|
243
|
-
| `Tab` |
|
|
244
|
-
|
|
|
245
|
-
|
|
|
246
|
-
|
|
|
208
|
+
| Typing + `Enter` during execution | Queues message into session's **steering queue** for next turn (does not abort current turn) |
|
|
209
|
+
| `Ctrl+C` (during execution) | Interrupts current turn |
|
|
210
|
+
| `Ctrl+C` (when idle) | 1st press shows warning; **2nd consecutive press exits** |
|
|
211
|
+
| `Tab` | Autocompletes slash commands, agent/firm slugs, **live session keys (s1, s2...)**, and `/runtime` / `/permission` values |
|
|
212
|
+
| `@path` + `Tab` | Autocompletes local file paths |
|
|
213
|
+
| `Up` / `Down` | Input history navigation |
|
|
214
|
+
| `!<shell-command>` | Execute shell command (requires **`full` permission**) |
|
|
247
215
|
|
|
248
|
-
|
|
249
|
-
`AGENTLAS_MAX_PARALLEL`(최대 16)로 올린다.
|
|
216
|
+
Parallel execution limit defaults to 4 concurrent sessions. Exceeding the limit halts with explicit refusal; increase limit via `AGENTLAS_MAX_PARALLEL` (up to 16).
|
|
250
217
|
|
|
251
|
-
##
|
|
218
|
+
## Operating Architecture
|
|
252
219
|
|
|
253
|
-
###
|
|
220
|
+
### Engine Boundary — No Duplicated Core OS Logic
|
|
254
221
|
|
|
255
|
-
|
|
256
|
-
그 런타임을 실행**한다. 자체 사본을 들고 있지 않다.
|
|
257
|
-
|
|
258
|
-
탐색 순서 (`engine/agentlas-core-harness.cjs`, `engine/hephaestus/runtime.cjs`):
|
|
222
|
+
Agentlas Terminal does not re-implement Agentlas OS. It resolves and executes the installed **Agentlas OS (Hephaestus/Core)** runtime on your system.
|
|
259
223
|
|
|
224
|
+
Runtime Search Order (`engine/agentlas-core-harness.cjs`, `engine/hephaestus/runtime.cjs`):
|
|
260
225
|
1. `HEPHAESTUS_BIN` / `HEPHAESTUS_RUNTIME_ROOT`
|
|
261
226
|
2. `~/.agentlas/runtime/current`
|
|
262
|
-
3.
|
|
263
|
-
`/Applications/Agentlas.app/Contents/Resources/Hephaestus`)
|
|
227
|
+
3. Packaged Core (`<resources>/Hephaestus`, macOS: `/Applications/Agentlas.app/Contents/Resources/Hephaestus`)
|
|
264
228
|
|
|
265
|
-
`storm
|
|
266
|
-
`career-graph`(파생 인덱스) · `journal` · `netadmin` · `hep` · `build` · `call` ·
|
|
267
|
-
`browser` · `connect`은 이 런타임으로 넘어가는 **패스스루**다. 런타임이 없으면
|
|
268
|
-
로컬 모조 실행이나 어휘 폴백을 만들지 않고 무엇이 없는지 말하고 exit 1 한다
|
|
269
|
-
(예: `storm`은 `stormbreaker-core-harness-unavailable`, `context`는 Core/Python
|
|
270
|
-
부재를 보고). 이 정직 정지가 계약이다.
|
|
229
|
+
Commands including `storm`, `swarm`, `workforce`/`network`, `route`, `research`, `context`, `career-graph`, `journal`, `netadmin`, `hep`, `build`, `call`, `browser`, and `connect` pass directly through to this core runtime. If no core runtime is found, Agentlas Terminal halts with an explicit error and exit code 1 (no silent fallback).
|
|
271
230
|
|
|
272
|
-
|
|
273
|
-
HTTP 표면·자격증명·MCP 프리플라이트·자동화 스케줄러·SQLite 스키마.
|
|
231
|
+
The terminal package owns REPL orchestration, session trees, agent registries, Hub/Cloud HTTP client surfaces, credential storage, MCP preflight probing, automation scheduling, and SQLite schema management.
|
|
274
232
|
|
|
275
|
-
###
|
|
233
|
+
### Shared State with Agentlas Desktop
|
|
276
234
|
|
|
277
|
-
|
|
278
|
-
데이터 폴더는 데스크탑 앱과 **동일한 userData**다 (`engine/core/paths.cjs`):
|
|
235
|
+
The launcher (`bin/agentlas.cjs`) runs system Node against `engine/`. The default data directory is identical to Agentlas Desktop's `userData`:
|
|
279
236
|
|
|
280
|
-
| OS |
|
|
237
|
+
| OS | Default Data Path |
|
|
281
238
|
| --- | --- |
|
|
282
239
|
| macOS | `~/Library/Application Support/Agentlas` |
|
|
283
240
|
| Windows | `%APPDATA%\Agentlas` |
|
|
284
|
-
| Linux | `$XDG_CONFIG_HOME/Agentlas` (
|
|
241
|
+
| Linux | `$XDG_CONFIG_HOME/Agentlas` (default `~/.config/Agentlas`) |
|
|
285
242
|
|
|
286
|
-
|
|
287
|
-
(`user_version=45`)로 부트스트랩하며, 앱을 나중에 깔면 앱이 거기서부터
|
|
288
|
-
마이그레이션한다. 결과적으로 **에이전트·챗·자동화·MCP 등록이 양쪽에서 같이
|
|
289
|
-
보인다.** `/spawn`으로 만든 서브에이전트 세션은 데스크탑의 `division` 서브챗
|
|
290
|
-
(`kind='division'` + `parent_chat_id`)으로 그대로 남는다.
|
|
243
|
+
The SQLite database file is `agentlas.sqlite` (`user_version=85`). When launched for the first time without an existing database, it bootstraps schemas using `engine/bootstrap-schema.sql`. Consequently, **projects, installed agents, task history, automation sessions, and MCP registrations are shared across Desktop and Terminal**. Subagent sessions spawned via `/spawn` are stored as scoped execution ledgers rather than new global Work conversations.
|
|
291
244
|
|
|
292
|
-
SQLite
|
|
293
|
-
성공 시) → 실패하면 Node 22+ `node:sqlite`.
|
|
245
|
+
SQLite Driver Fallback Ladder: `better-sqlite3` (optionalDependency native build) -> Node 22+ `node:sqlite`.
|
|
294
246
|
|
|
295
|
-
### Hub
|
|
247
|
+
### Hub Installation & Safety Policy
|
|
296
248
|
|
|
297
|
-
`engine/hub/install.cjs
|
|
298
|
-
막히는 경우:
|
|
249
|
+
Local installation of Hub agents is gated by `assertHubInstallAllowed` (`engine/hub/install.cjs`). Installation is restricted in the following scenarios:
|
|
299
250
|
|
|
300
|
-
- **
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
-
|
|
304
|
-
- **
|
|
305
|
-
- **web-only 에이전트** — 터미널에서 제공하지 않는다.
|
|
306
|
-
- **회수된 공개 리스팅** — 데스크탑 마켓플레이스와 같은 관측 결과
|
|
307
|
-
(`Hub agent not found`).
|
|
251
|
+
- **Cloud-callable / Call-only Agents**: Local install blocked. Use via `agentlas call <slug>`. Owners restore via `agentlas cloud restore <slug>`.
|
|
252
|
+
- **Packages without Instructions**: Blocked if required instruction manifests are missing.
|
|
253
|
+
- **Untrusted Trust Grades**: Packages with trust grade lower than A/B require explicit side-load overrides.
|
|
254
|
+
- **Web-only Agents**: Blocked on terminal surface.
|
|
255
|
+
- **Withdrawn Catalog Items**: Fails with `Hub agent not found`.
|
|
308
256
|
|
|
309
|
-
`upload
|
|
310
|
-
발행은 `--visibility marketplace`를 명시할 때만 일어난다.
|
|
257
|
+
Package uploads (`upload`) default to private owner-scoped Agent Cloud storage; public Hub publishing requires explicit `--visibility marketplace`.
|
|
311
258
|
|
|
312
|
-
##
|
|
259
|
+
## Desktop-Only Surface Scope
|
|
313
260
|
|
|
314
|
-
-
|
|
315
|
-
-
|
|
316
|
-
-
|
|
317
|
-
-
|
|
318
|
-
-
|
|
319
|
-
-
|
|
320
|
-
-
|
|
321
|
-
-
|
|
322
|
-
- 공급자 쿼터 대시보드, Marketplace/Library 브라우징, Agentlas One
|
|
261
|
+
The following GUI-specific features are reserved for Agentlas Desktop and are not exposed in the terminal CLI:
|
|
262
|
+
- Telegram bot token issuance & port configuration (`agentlas telegram` is read-only)
|
|
263
|
+
- Visual project-team composition and ordering
|
|
264
|
+
- Interactive GUI approval sheets & browser popups
|
|
265
|
+
- Custom MCP server addition GUI (Terminal supports listing & `mcp probe`)
|
|
266
|
+
- Site Studio, T-rex slide studio, Prompt Store GUI
|
|
267
|
+
- Mobile pairing QR sheets & Quests
|
|
268
|
+
- Provider quota dashboards & visual marketplace browsing
|
|
323
269
|
|
|
324
|
-
##
|
|
270
|
+
## Environment Variables
|
|
325
271
|
|
|
326
|
-
|
|
|
272
|
+
| Variable | Description |
|
|
327
273
|
| --- | --- |
|
|
328
|
-
| `AGENTLAS_USER_DATA_DIR` |
|
|
329
|
-
| `AGENTLAS_LANG` | `ko` \| `en` —
|
|
330
|
-
| `AGENTLAS_MAX_PARALLEL` |
|
|
331
|
-
| `AGENTLAS_SESSION` | Agentlas Cloud
|
|
332
|
-
| `AGENTLAS_WEB_BASE_URL` |
|
|
333
|
-
| `AGENTLAS_MCP_BASE_URL` | Hub MCP
|
|
334
|
-
| `HEPHAESTUS_BIN`
|
|
335
|
-
| `AGENTLAS_MODEL_MAX_TIER` | `economy
|
|
336
|
-
| `NO_COLOR` |
|
|
337
|
-
|
|
338
|
-
##
|
|
274
|
+
| `AGENTLAS_USER_DATA_DIR` | Custom data directory override (default: shared Desktop `userData`) |
|
|
275
|
+
| `AGENTLAS_LANG` | Preferred locale (`ko` \| `en`) — overrides system `LANG` |
|
|
276
|
+
| `AGENTLAS_MAX_PARALLEL` | Maximum concurrent execution sessions (default: 4, max: 16) |
|
|
277
|
+
| `AGENTLAS_SESSION` | Agentlas Cloud session cookie token |
|
|
278
|
+
| `AGENTLAS_WEB_BASE_URL` | Base URL for Web services (default: `https://agentlas.cloud`) |
|
|
279
|
+
| `AGENTLAS_MCP_BASE_URL` | Base URL for Hub MCP APIs (default: `<web>/api/mcp/v1`) |
|
|
280
|
+
| `HEPHAESTUS_BIN` / `HEPHAESTUS_RUNTIME_ROOT` | Custom path to Agentlas OS core runtime |
|
|
281
|
+
| `AGENTLAS_MODEL_MAX_TIER` | Max model tier cap for swarms (`economy` \| `balanced` \| `frontier`) |
|
|
282
|
+
| `NO_COLOR` | Disables ANSI color output if non-empty (`FORCE_COLOR=1` forces color on) |
|
|
283
|
+
|
|
284
|
+
## Troubleshooting & Diagnostics
|
|
339
285
|
|
|
340
286
|
```sh
|
|
341
|
-
agentlas doctor #
|
|
342
|
-
agentlas --where #
|
|
287
|
+
agentlas doctor # Checks database, PATH runtimes, active CLI drivers, and cloud session
|
|
288
|
+
agentlas --where # Outputs JSON diagnostic of launcher, engine, DB paths, driver, and Node version
|
|
343
289
|
```
|
|
344
290
|
|
|
345
|
-
- **`no_runtime: no agent CLI found
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
- **`
|
|
349
|
-
|
|
350
|
-
- **`Node vX — Node 22+ (node:sqlite) is required when better-sqlite3 is
|
|
351
|
-
unavailable.`** — Node 20/21에서 `better-sqlite3` 네이티브 빌드가 실패했다.
|
|
352
|
-
Node 22+로 올리거나 빌드 도구를 갖추고 재설치한다. `--where`의 `sqliteDriver`가
|
|
353
|
-
실제 사용 드라이버를 알려준다.
|
|
354
|
-
- **`storm`/`context`/`hep`가 런타임 없음으로 멈춤** — Agentlas OS 런타임이 없다.
|
|
355
|
-
설치하거나 `HEPHAESTUS_BIN=<경로>`를 지정한다.
|
|
356
|
-
- **`'xxx' 은(는) agentlas 명령이 아닙니다`** — 오타 가드다. 작업으로 돌리려면
|
|
357
|
-
`agentlas run -p "xxx"`.
|
|
358
|
-
- **`logout` 했는데 로그인 상태** — `AGENTLAS_SESSION`이 설정돼 있다. env를 지운다.
|
|
359
|
-
- **`agentlas setup requires an interactive terminal`** — 비-TTY에서 마법사를 돌리면
|
|
360
|
-
조용한 성공으로 위장되므로 거절한다.
|
|
361
|
-
|
|
362
|
-
## 개발
|
|
363
|
-
|
|
364
|
-
엔진 소스는 `engine/*.cjs` — 여기가 정본이므로 직접 수정한다.
|
|
365
|
-
|
|
366
|
-
```sh
|
|
367
|
-
sh test/smoke.sh # 기본 표면 + 무인자 가드 + 신선 환경 첫 실행
|
|
368
|
-
# + 계약 테스트 + Runtime Doctor 3제품 패리티 게이트
|
|
369
|
-
npm run smoke # 동일 (= npm run test:release-contracts)
|
|
370
|
-
sh scripts/gen-bootstrap-schema.sh [db-path] # engine/bootstrap-schema.sql 재생성
|
|
371
|
-
```
|
|
291
|
+
- **`no_runtime: no agent CLI found`**: Install `claude`, `codex`, or `gemini` CLI and add to `PATH`. Note that `kimi`/`grok`/`cursor-agent` are detected by `doctor` but do not yet have streaming execution drivers.
|
|
292
|
+
- **`runtime '<kind>' has no v2 streaming driver yet`**: Specified `--runtime` is not supported for active execution. Supported values: `claude-code`, `codex`, `gemini`.
|
|
293
|
+
- **`Node vX — Node 22+ (node:sqlite) is required when better-sqlite3 is unavailable`**: `better-sqlite3` native build failed on Node 20/21. Upgrade to Node 22+ or install build tools for native compilation.
|
|
294
|
+
- **`storm`/`context`/`hep` halting due to missing runtime**: Agentlas OS core runtime is missing. Install Agentlas OS or set `HEPHAESTUS_BIN=<path>`.
|
|
295
|
+
- **`'xxx' is not an agentlas command`**: Typo guard intercepted an unrecognized command. Use `agentlas run -p "xxx"` to run it as a prompt.
|
|
372
296
|
|
|
373
|
-
|
|
374
|
-
런타임 진단·수리 규칙(`engine/agentlas-doctor.cjs`)을 고쳤다면 3제품 패리티
|
|
375
|
-
게이트를 반드시 통과시켜라.
|
|
297
|
+
## Development & Verification
|
|
376
298
|
|
|
377
|
-
|
|
299
|
+
Engine source code resides in `engine/*.cjs`.
|
|
378
300
|
|
|
379
301
|
```sh
|
|
380
|
-
|
|
381
|
-
|
|
302
|
+
sh test/smoke.sh # Runs surface tests, guard tests, fresh DB tests, contract tests & parity gates
|
|
303
|
+
npm run smoke # Equivalent to npm run test:release-contracts
|
|
304
|
+
sh scripts/gen-bootstrap-schema.sh [db-path] # Regenerates engine/bootstrap-schema.sql
|
|
382
305
|
```
|
|
383
306
|
|
|
384
|
-
|
|
385
|
-
폴더이므로 지우기 전에 확인한다. `agentlas uninstall <agent>`는 **설치 에이전트**를
|
|
386
|
-
지우는 별개 명령이며 CLI 자체를 제거하지 않는다.
|
|
307
|
+
Smoke tests run isolated inside a temporary `AGENTLAS_USER_DATA_DIR` and do not touch local user data.
|
|
387
308
|
|
|
388
|
-
##
|
|
309
|
+
## Release & Security Allowlist
|
|
389
310
|
|
|
390
|
-
|
|
391
|
-
저장소의 소스 커밋이나 `package.json`의 버전은 GitHub 릴리스나 npm 발행을 증명하지
|
|
392
|
-
않는다 — 설치 전에 레지스트리를 직접 확인하라.
|
|
311
|
+
Published package versions on npm are governed strictly by OIDC trusted publisher workflows (`.github/workflows/npm-publish.yml`).
|
|
393
312
|
|
|
394
|
-
|
|
395
|
-
하나로만 이뤄진다. 정확한 immutable `vX.Y.Z` 태그(또는 현재 main의 정확한 커밋
|
|
396
|
-
SHA + 명시 버전)만 받고, 태그↔패키지 identity 검증 → 릴리스 계약 + 스모크 →
|
|
397
|
-
`npm pack` 산출물 allowlist 검사(test/docs/fixtures/scripts 등 개발 전용 경로 차단)
|
|
398
|
-
→ 발행 → 레지스트리 재확인 순으로 진행한다. 장기 npm publish 토큰은 GitHub에
|
|
399
|
-
저장하지 않는다.
|
|
313
|
+
Release verification enforces tag identity (`vX.Y.Z`), contract tests, smoke tests, and manifest allowlists preventing non-release files (development tests, fixtures, internal documents) from being packaged into npm artifacts.
|
|
400
314
|
|
|
401
|
-
|
|
402
|
-
발행된 버전은 언제나 그 정확한 태그에서 나와야 하고, 태그 이후의 `main` 변경은
|
|
403
|
-
다음 버전이지 옛 번호로 재발행되지 않는다.
|
|
315
|
+
Detailed release logs and source-to-registry boundaries are documented in [CHANGELOG.md](CHANGELOG.md).
|
|
404
316
|
|
|
405
317
|
## License
|
|
406
318
|
|
|
407
|
-
Apache-2.0 — Agentlas Terminal is the independent terminal runtime for the
|
|
408
|
-
[Agentlas OS](https://github.com/agentlas-ai/Agentlas-OS) package contract. Its
|
|
409
|
-
`engine/` directory is maintained and released from this repository; it is not
|
|
410
|
-
a generated mirror of Agentlas Desktop.
|
|
319
|
+
[Apache-2.0](LICENSE) — Agentlas Terminal is the independent terminal runtime for the [Agentlas OS](https://github.com/agentlas-ai/Agentlas-OS) package contract.
|