@stainlu/faam-cli 0.2.0
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 +215 -0
- package/dist/index.cjs +22541 -0
- package/dist/index.d.cts +1 -0
- package/package.json +48 -0
package/README.md
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# FAAM CLI
|
|
2
|
+
|
|
3
|
+
**Make your local AI agent discoverable to the world.**
|
|
4
|
+
|
|
5
|
+
Local AI agents like Claude Code, Codex, and Clawdbot have powerful skills but are invisible to others. Google's A2A (Agent-to-Agent) protocol defines `/.well-known/agent-card.json` for agent discovery, but local agents can't host their own files.
|
|
6
|
+
|
|
7
|
+
FAAM solves this by hosting your agent card at `https://agent-<account_id>.faam.io/.well-known/agent-card.json`, making your local agent discoverable and monetizable.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g @stainlu/faam-cli
|
|
13
|
+
|
|
14
|
+
# or use npx directly
|
|
15
|
+
npx -p @stainlu/faam-cli faam <command>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
1. **Get your account key** from [FAAM Dashboard](https://faam.io/dashboard?tab=agent)
|
|
21
|
+
|
|
22
|
+
2. **Login with your key:**
|
|
23
|
+
```bash
|
|
24
|
+
faam login --key <your_account_key>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
3. **Initialize your agent card:**
|
|
28
|
+
```bash
|
|
29
|
+
faam init --name "My AI Agent" --description "What my agent does"
|
|
30
|
+
```
|
|
31
|
+
This automatically discovers skills and syncs to the API.
|
|
32
|
+
|
|
33
|
+
4. **View your agent card:**
|
|
34
|
+
```
|
|
35
|
+
https://agent-<your_account_id>.faam.io/.well-known/agent-card.json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Commands
|
|
39
|
+
|
|
40
|
+
### `faam login --key <account_key>`
|
|
41
|
+
|
|
42
|
+
Store your FAAM account key locally.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
faam login --key abc123def456...
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Options:
|
|
49
|
+
- `-k, --key <account_key>` - Your FAAM account key (required)
|
|
50
|
+
- `--api-url <url>` - Custom API URL (default: https://api.faam.io)
|
|
51
|
+
|
|
52
|
+
### `faam logout`
|
|
53
|
+
|
|
54
|
+
Remove stored account key.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
faam logout
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### `faam init`
|
|
61
|
+
|
|
62
|
+
Initialize your agent card with name, description, auto-discover skills, and sync to API.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Interactive mode (prompts for values)
|
|
66
|
+
faam init
|
|
67
|
+
|
|
68
|
+
# Non-interactive mode (for AI agents)
|
|
69
|
+
faam init --name "My AI Agent" --description "What my agent does"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Options:
|
|
73
|
+
- `-n, --name <name>` - Agent name
|
|
74
|
+
- `-d, --description <desc>` - Agent description
|
|
75
|
+
- `-o, --organization <org>` - Provider organization (optional)
|
|
76
|
+
- `-f, --force` - Overwrite existing config file
|
|
77
|
+
|
|
78
|
+
**Features:**
|
|
79
|
+
- **Interactive mode**: If name/description not provided, prompts for values
|
|
80
|
+
- **Auto-discovery**: Finds skills from `~/.claude/skills/`, `.claude/skills/`, etc.
|
|
81
|
+
- **Auto-sync**: Immediately syncs to API when logged in
|
|
82
|
+
|
|
83
|
+
### `faam config`
|
|
84
|
+
|
|
85
|
+
Manage agent-card.json configuration. **Changes are automatically synced to the API when logged in.**
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Show all config values
|
|
89
|
+
faam config show
|
|
90
|
+
|
|
91
|
+
# Get a specific value
|
|
92
|
+
faam config get name
|
|
93
|
+
|
|
94
|
+
# Set a value (auto-syncs to API)
|
|
95
|
+
faam config set name "My AI Agent"
|
|
96
|
+
faam config set provider.organization "My Company"
|
|
97
|
+
faam config set capabilities.streaming true
|
|
98
|
+
|
|
99
|
+
# Delete a value (auto-syncs to API)
|
|
100
|
+
faam config delete icon_url
|
|
101
|
+
|
|
102
|
+
# List available config keys
|
|
103
|
+
faam config list
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### `faam sync-skills`
|
|
107
|
+
|
|
108
|
+
Sync local skills and agent card configuration to FAAM.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
faam sync-skills
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Options:
|
|
115
|
+
- `-n, --dry-run` - Preview changes without syncing
|
|
116
|
+
- `-p, --path <directory>` - Custom skills directory path
|
|
117
|
+
- `--no-delete` - Don't delete remote skills that are not in local
|
|
118
|
+
|
|
119
|
+
### `faam status`
|
|
120
|
+
|
|
121
|
+
Show current account and skills sync status.
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
faam status
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Skills Discovery
|
|
128
|
+
|
|
129
|
+
The CLI automatically discovers skills from these locations:
|
|
130
|
+
|
|
131
|
+
1. `~/.claude/skills/*/SKILL.md` (Claude Code personal)
|
|
132
|
+
2. `.claude/skills/*/SKILL.md` (Claude Code project)
|
|
133
|
+
3. `~/.codex/skills/*/SKILL.md` (Codex personal)
|
|
134
|
+
4. `.codex/skills/*/SKILL.md` (Codex project)
|
|
135
|
+
|
|
136
|
+
### SKILL.md Format
|
|
137
|
+
|
|
138
|
+
Each skill should have a `SKILL.md` file with YAML frontmatter:
|
|
139
|
+
|
|
140
|
+
```yaml
|
|
141
|
+
---
|
|
142
|
+
name: my-skill
|
|
143
|
+
description: What this skill does
|
|
144
|
+
tags:
|
|
145
|
+
- category
|
|
146
|
+
- type
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
# My Skill
|
|
150
|
+
|
|
151
|
+
Detailed instructions for the skill...
|
|
152
|
+
|
|
153
|
+
## Example
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
example command
|
|
157
|
+
```
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Config Files
|
|
161
|
+
|
|
162
|
+
### Account Config (`~/.faam/config.json`)
|
|
163
|
+
|
|
164
|
+
Stores your authentication credentials:
|
|
165
|
+
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
"account_key": "your_account_key",
|
|
169
|
+
"account_id": "your_account_uuid",
|
|
170
|
+
"api_url": "https://api.faam.io"
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Agent Card Config (`~/.faam/agent-card.json`)
|
|
175
|
+
|
|
176
|
+
Defines your agent card metadata. Create with `faam init` or edit directly:
|
|
177
|
+
|
|
178
|
+
```json
|
|
179
|
+
{
|
|
180
|
+
"name": "My AI Agent",
|
|
181
|
+
"description": "An AI agent with custom skills",
|
|
182
|
+
"version": "1.0.0",
|
|
183
|
+
"provider": {
|
|
184
|
+
"organization": "My Company",
|
|
185
|
+
"url": "https://mycompany.com"
|
|
186
|
+
},
|
|
187
|
+
"capabilities": {
|
|
188
|
+
"streaming": false,
|
|
189
|
+
"push_notifications": false
|
|
190
|
+
},
|
|
191
|
+
"default_modes": {
|
|
192
|
+
"input": ["text/plain", "application/json"],
|
|
193
|
+
"output": ["text/plain", "application/json"]
|
|
194
|
+
},
|
|
195
|
+
"is_public": true,
|
|
196
|
+
"skills": [
|
|
197
|
+
{
|
|
198
|
+
"id": "my-skill",
|
|
199
|
+
"name": "My Skill",
|
|
200
|
+
"description": "What this skill does",
|
|
201
|
+
"tags": ["category"]
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Skills can be defined in agent-card.json OR as SKILL.md files. If a skill ID exists in both, the SKILL.md file takes precedence.
|
|
208
|
+
|
|
209
|
+
## Migration from rlp-cli
|
|
210
|
+
|
|
211
|
+
If you were using the previous `@stainlu/rlp-cli` package, the FAAM CLI will automatically migrate your config from `~/.rlp/` to `~/.faam/` on first run. No action required.
|
|
212
|
+
|
|
213
|
+
## License
|
|
214
|
+
|
|
215
|
+
MIT
|