Skip to content

CLI Full Command Reference ​

main.py is the command-line interface for the Familiars bridge, wrapping all REST endpoints exposed by 47 route files (excluding the WebSocket-only digital human / phone call streams).

40 command groups, 200+ subcommands. This document is the complete reference.


0. Startup Prerequisites ​

The CLI does not start the bridge. It drives an already-running bridge instance.

bash
# 先确保 bridge 运行
.venv/Scripts/python -m src.bridge.run

# 另开终端
python main.py --help

Authentication ​

Every request carries the X-Bridge-Token header. The CLI resolves the token with the following priority:

  1. --token <value> command-line argument
  2. BRIDGE_TOKEN environment variable
  3. File pointed to by the BRIDGE_TOKEN_PATH environment variable
  4. File specified by the --token-file <path> argument
  5. Default: workspace/.bridge_token

Bridge URL ​

  1. --base-url <url> command-line argument
  2. BRIDGE_URL environment variable
  3. workspace/.bridges.json (written when Electron spawns the bridge; contains PID + port)
  4. workspace/.bridge.port (port file written by the bridge)
  5. Default: https://127.0.0.1:18711

Global Options ​

OptionDescription
--prettyPretty-print JSON output (2-space indent)
--verbose / -vPrint request info to stderr
--base-urlOverride the bridge URL
--tokenOverride the bridge token
--token-fileSpecify a token file path
--timeoutHTTP timeout in seconds (default 60)

Body Control ​

All POST/PUT/PATCH subcommands support:

OptionDescription
--field KEY=VALUESet body fields one at a time (repeatable; values are auto-parsed as JSON)
--body-json JSONFull JSON body (overrides --field)
--body-file PATHRead the JSON body from a file (overrides --body-json)
--query KEY=VALUEExtra query parameters (repeatable)

File Upload ​

Subcommands that support multipart/form-data:

OptionDescription
--file PATHPath of the file to upload (required)
--form KEY=VALUEAdditional form fields (repeatable)

1. Command Group Overview ​

#GroupDescriptionSubcommands
1authLocal identity register/login2
2brokerMarketplace author tools + marketplace install + federation/CRL/trust management20
3recipeRecipe author tools: pack/sign/verify/publish + relay review8
4flowFlow template author tools: pack/sign/verify/publish + relay review8
5agentsAgent lifecycle + assets16
6chatChat: send/stream/translate/model list5
7dialoguesDialogue list management5
8treeDialogue tree structure operations7
9todosTodo CRUD6
10schedulesSchedule CRUD5
11cronScheduled job management6
12remindersReminders: recent/SSE stream/snooze/dismiss4
13settingsRuntime settings (global/agent/dialogue/LLM)8
14userUser profile/avatar5
15backgroundBackground mode + autorun4
16statusRuntime status3
17usageLLM token usage1
18memoryMemory writer diagnostics1
19learnFramework docs2
20feedbackProactive message rating2
21quick-inputsQuick input templates4
22quick-askHotkey ad-hoc chat2
23draftAuto-classify text into schedules/todos3
24reportsReports + manager meta-review6
25responsesOpenAI Responses API proxy2
26devDevelopment/demo endpoints2
27giftGift v24
28feishuFeishu webhook2
29monitorSocial listeners7
30skillsSkill list/run/SSE10
31skill-forgeSkill forging6
32skill-workshopSkill studio (video pipeline)14
33cgCG cutscenes5
34asrASR speech recognition + prewarm7
35digital-humanDigital human REST4
36phone-callPhone call REST1
37recipes-libraryRecipe marketplace library3
38recipesRecipe CRUD/bind/dry-run/eval16
39agent-workshopExternal agent import6
40agent-assetsAgent asset staging/replacement9
41commCommunication hub (messages/approvals/interrupt)7
42flowsFlow instance management4

2. auth — Local Identity ​

bash
# 注册新本地身份
python main.py auth register --nickname "Alice"

# 登录(当前设备指纹)
python main.py auth login
SubcommandHTTPPathParameters
registerPOST/api/auth/register--nickname
loginPOST/api/auth/loginNone

3. broker — Marketplace ​

3.1 Local author tools (no bridge required) ​

bash
# 生成 Ed25519 签名密钥
python main.py broker keygen --name mykey
python main.py broker keygen --name mykey --overwrite   # 覆盖旧密钥

# 列出已有密钥
python main.py broker keys-list

# 打包 broker 目录
python main.py broker pack workspace/manager/brokers/starter_broker
python main.py broker pack workspace/manager/brokers/starter_broker --output custom.broker.zip

# 签名
python main.py broker sign starter_broker.broker.zip --author-key mykey

# 校验
python main.py broker verify starter_broker.broker.zip --pretty

# 一键发布到 relay
python main.py broker publish workspace/manager/brokers/starter_broker \
  --author-key mykey --relay https://api.familiars.cn \
  --author-name "My Broker" --categories "tools,chat"

# 一键发布到本地 host 目录
python main.py broker publish workspace/manager/brokers/starter_broker \
  --author-key mykey --host-dir ./host --download-url-base https://brokers.example.com/

3.2 Marketplace installation (requires bridge) ​

bash
python main.py broker install --url https://example.com/x.broker.zip \
  --sha256 <64位hex> --pubkey <base64>

# 查看市场 index
python main.py broker marketplace-index

3.3 Federation management ​

bash
python main.py broker federation-status

3.4 Relay trust management (operator-only) ​

bash
python main.py broker relay-trust-add --pubkey <b64> --operator-key mykey \
  --relay https://api.familiars.cn --name "Trusted Author" --notes "vouched"

python main.py broker relay-trust-list --relay https://api.familiars.cn

python main.py broker relay-trust-remove --pubkey <b64> --operator-key mykey \
  --relay https://api.familiars.cn

3.5 Relay review ​

bash
# 查看待审核队列
python main.py broker relay-review-pending --operator-key mykey --relay https://api.familiars.cn

# 审批
python main.py broker relay-review-approve --broker-id starter_broker --version 1.0.0 \
  --operator-key mykey --relay https://api.familiars.cn --note "LGTM"

# 拒绝
python main.py broker relay-review-reject --broker-id starter_broker --version 1.0.0 \
  --note "Missing manifest" --operator-key mykey --relay https://api.familiars.cn

# 查看提交状态
python main.py broker relay-review-status --broker-id starter_broker --version 1.0.0 \
  --author-key mykey --relay https://api.familiars.cn

# 交互式逐条审核
python main.py broker relay-review --operator-key mykey --relay https://api.familiars.cn

3.6 Cluster CRL + trust management ​

bash
# CRL 吊销
python main.py broker crl-revoke --pubkey <b64> --operator-key mykey --reason "compromised"

# CRL 列表
python main.py broker crl-list

# CRL 取消吊销
python main.py broker crl-unrevoke --pubkey <b64> --operator-key mykey

# 集群信任添加/列表/移除
python main.py broker trust-add --pubkey <b64> --operator-key mykey
python main.py broker trust-list
python main.py broker trust-remove --pubkey <b64> --operator-key mykey

Complete subcommand table ​

SubcommandTypeDescriptionKey parameters
keygenLocalGenerate an Ed25519 signing key--name --overwrite
keys-listLocalList existing keys-
packLocalPack a broker directory into .broker.zipsource_dir --output
signLocalSign a .broker.zipzip_path --author-key
verifyLocalVerify signature + manifestzip_path
publishLocalOne-shot pack+sign+publishsource_dir --author-key --relay/--host-dir+--download-url-base --author-name --categories
installBridgeInstall from a marketplace URL--url --sha256 --pubkey
marketplace-indexBridgeView the marketplace index-
federation-statusBridgeFederation status-
relay-trust-addLocal→relayAdd trust--pubkey --operator-key --relay
relay-trust-listLocal→relayList trust--relay
relay-trust-removeLocal→relayRemove trust--pubkey --operator-key --relay
relay-review-pendingLocal→relayPending review list--operator-key --relay
relay-review-approveLocal→relayApprove--broker-id --version --operator-key --relay
relay-review-rejectLocal→relayReject--broker-id --version --note --operator-key --relay
relay-review-statusLocal→relayStatus query--broker-id --version --author-key --relay
relay-reviewLocal→relayInteractive review--operator-key --relay
crl-revokeLocal→bridgeCRL revoke--pubkey --operator-key --reason
crl-listLocal→bridgeCRL list-
crl-unrevokeLocal→bridgeCRL unrevoke--pubkey --operator-key
trust-addLocal→bridgeCluster trust add--pubkey --operator-key
trust-listLocal→bridgeCluster trust list-
trust-removeLocal→bridgeCluster trust remove--pubkey --operator-key

4. recipe — Recipe Author Tools ​

bash
python main.py recipe pack workspace/agent_recipes/my_recipe
python main.py recipe sign my_recipe.recipe.zip --author-key mykey
python main.py recipe verify my_recipe.recipe.zip
python main.py recipe publish workspace/agent_recipes/my_recipe \
  --author-key mykey --relay https://api.familiars.cn
SubcommandTypeDescriptionKey parameters
packLocalPack into .recipe.zipsource_dir --output
signLocalSignzip_path --author-key
verifyLocalVerifyzip_path
publishLocal→relayPack+sign+uploadsource_dir --author-key --relay --author-name --categories
relay-review-pendingLocal→relayPending review list--operator-key --relay
relay-review-approveLocal→relayApprove--artifact-id --version --operator-key --relay
relay-review-rejectLocal→relayReject--artifact-id --version --note --operator-key --relay
relay-review-statusLocal→relayStatus query--artifact-id --version --author-key --relay
relay-reviewLocal→relayInteractive review--operator-key --relay

5. flow — Flow Template Author Tools ​

Same structure as recipe, except the packaged target is a flow template directory.

SubcommandTypeDescriptionKey parameters
packLocalPack into .flow.zipsource_dir --output
signLocalSignzip_path --author-key
verifyLocalVerifyzip_path
publishLocal→relayPack+sign+uploadsource_dir --author-key --relay
relay-review-pendingLocal→relayPending review list--operator-key --relay
relay-review-approveLocal→relayApprove--artifact-id --version --operator-key --relay
relay-review-rejectLocal→relayReject--artifact-id --version --note --operator-key --relay
relay-review-statusLocal→relayStatus query--artifact-id --version --author-key --relay
relay-reviewLocal→relayInteractive review--operator-key --relay

6. agents — Agent Lifecycle ​

bash
python main.py agents list --pretty
python main.py agents create --agent-id 5
python main.py agents create-stream --name "小助手" --identity "温柔体贴" --personality "幽默"
python main.py agents delete 5
python main.py agents avatar 1 --output avatar.png
python main.py agents portrait 1 --output portrait.png
python main.py agents figure-rgba 1 --output figure.png
python main.py agents bust-loop 1 --output bust.webp
python main.py agents diagnose-dirs
SubcommandHTTPPathKey parameters
listGET/api/agents-
createPOST/api/agents--agent-id
create-streamSSEGET /api/agents/create/stream--name --identity --personality --appearance --voice --need-figure --need-audio --figure-staging-id --voice-staging-id --voice-transcript
deleteDELETE/api/agents/{agent_id}agent_id
greeting-playedPOST/api/agents/{agent_id}/greeting/playedagent_id
greeting-videoGET/api/agents/{agent_id}/greetingagent_id --output
diagnose-dirsGET/api/agents/diagnose-dirs-
avatarGET/api/agents/{agent_id}/avataragent_id --output
portraitGET/api/agents/{agent_id}/portraitagent_id --output
figure-rgbaGET/api/agents/{agent_id}/figure_rgbaagent_id --output
bust-loopGET/api/agents/{agent_id}/bust_loopagent_id --output
bust-metaGET/api/agents/{agent_id}/bust_metaagent_id
theme-elementGET/api/agents/{agent_id}/theme/{element}agent_id element --output
theme-metaGET/api/agents/{agent_id}/theme/metaagent_id
skill-cgGET/api/agents/{agent_id}/skills/{skill_id}/cgagent_id skill_id --output
manager-entry-imageGET/api/manager/entry-image/{key}key --output

7. chat — Chat ​

bash
# 发送消息,获取完整 JSON 回复
python main.py chat send --prompt "你好" --agent-id 1

# SSE 流式输出
python main.py chat stream --prompt "今天有什么待办?" --agent-id 1

# 翻译
python main.py chat translate --text "Hello World" --target zh

# 列出可用模型
python main.py chat models
SubcommandHTTPPathKey parameters
sendPOST/api/chat/send--prompt --agent-id --dialogue-id --parent-id --type --call-mode
streamSSEGET /api/chat/stream--prompt --agent-id --dialogue-id --parent-id --type --model --regen-q --resume-a --call-mode
generate-streamSSEGET /api/chat/generate/stream--prompt --agent-id
translatePOST/api/translate--text --target
modelsGET/api/models-

8. dialogues — Dialogue List ​

bash
python main.py dialogues list 1
python main.py dialogues create 1 --topic "新对话"
python main.py dialogues rename 1 3 --topic "重命名"
python main.py dialogues mark-read 1 3
python main.py dialogues delete 1 3
SubcommandHTTPPathKey parameters
listGET/api/dialogues/{agent_id}agent_id
createPOST/api/dialogues/{agent_id}agent_id --topic
renamePATCH/api/dialogues/{agent_id}/{dialogue_id}agent_id dialogue_id --topic
mark-readPOST/api/dialogues/{agent_id}/{dialogue_id}/readagent_id dialogue_id
deleteDELETE/api/dialogues/{agent_id}/{dialogue_id}agent_id dialogue_id

9. tree — Dialogue Tree ​

bash
python main.py tree get 1 1
python main.py tree query 1 1 --text "报销流程" --k 5
python main.py tree node 1 1 42
python main.py tree path 1 1 42
python main.py tree delete 1 1 42
python main.py tree move 1 1 --node-id 42 --new-parent-id 10
python main.py tree edit 1 1 42 --content "修改后的内容"
SubcommandHTTPPathKey parameters
getGET/api/tree/{agent_id}/{dialogue_id}agent_id dialogue_id
queryGET/api/tree/{agent_id}/{dialogue_id}/queryagent_id dialogue_id --text --k
nodeGET/api/tree/{agent_id}/{dialogue_id}/node/{node_id}agent_id dialogue_id node_id
pathGET/api/tree/{agent_id}/{dialogue_id}/path/{node_id}agent_id dialogue_id node_id
deleteDELETE/api/tree/{agent_id}/{dialogue_id}/node/{node_id}agent_id dialogue_id node_id
movePOST/api/tree/{agent_id}/{dialogue_id}/moveagent_id dialogue_id --node-id --new-parent-id
editPATCH/api/tree/{agent_id}/{dialogue_id}/node/{node_id}agent_id dialogue_id node_id --content

10. todos — Todos ​

bash
python main.py todos list
python main.py todos create --title "买牛奶" --deadline 2026-07-05T18:00
python main.py todos patch 3 --title "买全脂牛奶"
python main.py todos complete 3
python main.py todos uncomplete 3
python main.py todos delete 3
SubcommandHTTPPathKey parameters
listGET/api/todos--open-only
createPOST/api/todos--title --content --deadline --emergency-level --needs-reminder --remind-at --frequency
patchPATCH/api/todos/{todo_id}todo_id --title --content --deadline --emergency-level
completePOST/api/todos/{todo_id}/completetodo_id
uncompletePOST/api/todos/{todo_id}/uncompletetodo_id
deleteDELETE/api/todos/{todo_id}todo_id

11. schedules — Schedules ​

bash
python main.py schedules list --agent-id 1
python main.py schedules create --title "会议" --scheduled-time 2026-08-30T14:00:00
python main.py schedules complete 5
python main.py schedules uncomplete 5
python main.py schedules delete 5
SubcommandHTTPPathKey parameters
listGET/api/schedules--agent-id
createPOST/api/schedules--title --content --scheduled-time --emergency-level --frequency --kind --needs-reminder --remind-at
completePOST/api/schedules/{schedule_id}/completeschedule_id
uncompletePOST/api/schedules/{schedule_id}/uncompleteschedule_id
deleteDELETE/api/schedules/{schedule_id}schedule_id

12. cron — Scheduled Jobs ​

bash
python main.py cron list --agent-id 1
python main.py cron create --name "morning_report" --cron "0 9 * * *" --task "生成每日报告" --agent-id 1
python main.py cron patch morning_report --cron "30 9 * * *"
python main.py cron runs morning_report --limit 10
python main.py cron run-now morning_report
python main.py cron delete morning_report
SubcommandHTTPPathKey parameters
listGET/api/cron-jobs--agent-id --include-system
createPOST/api/cron-jobs--name --cron --task --agent-id --action --recurring
patchPATCH/api/cron-jobs/{name}name --new-name --cron --task --action --recurring --agent-id
deleteDELETE/api/cron-jobs/{name}name
runsGET/api/cron-jobs/{name}/runsname --limit
run-nowPOST/api/cron-jobs/{name}/run-nowname

13. reminders — Reminders ​

bash
python main.py reminders recent --since-ts 1725000000 --limit 20
python main.py reminders stream --start-ts 1725000000
python main.py reminders snooze todo 3 --minutes 15
python main.py reminders dismiss schedule 5
SubcommandHTTPPathKey parameters
recentGET/api/reminders/recent--since-ts --limit
streamSSEGET /api/reminders/stream--start-ts
snoozePOST/api/reminders/{kind}/{subject_id}/snoozekind(schedule/todo) subject_id --minutes
dismissPOST/api/reminders/{kind}/{subject_id}/dismisskind subject_id

14. settings — Runtime Settings ​

bash
python main.py settings get
python main.py settings put --body-json '{"color":"red"}'
python main.py settings get-agent 1
python main.py settings put-agent 1 --body-json '{"need_initiative":false}'
python main.py settings get-llm
python main.py settings put-llm --base-url https://api.openai.com/v1 --api-key sk-xxx
SubcommandHTTPPathKey parameters
getGET/api/settings-
putPUT/api/settingsJSON body
get-agentGET/api/agents/{agent_id}/settingsagent_id
put-agentPUT/api/agents/{agent_id}/settingsagent_id JSON body
get-dialogueGET/api/dialogues/{agent_id}/{dialogue_id}/settingsagent_id dialogue_id
put-dialoguePUT/api/dialogues/{agent_id}/{dialogue_id}/settingsagent_id dialogue_id JSON body
get-llmGET/api/settings/llm-
put-llmPUT/api/settings/llm--base-url --api-key --default-model --transport-mode --auto-fallback

15. user — User Profile ​

bash
python main.py user profile-get
python main.py user profile-put --body-json '{"nickname":"Alice"}'
python main.py user avatar-get --output my_avatar.png
python main.py user avatar-upload --file avatar.png
python main.py user intro --text "我是一名开发者"
SubcommandHTTPPathKey parameters
profile-getGET/api/user/profile-
profile-putPUT/api/user/profileJSON body
avatar-getGET/api/user/avatar--output
avatar-uploadPOST/api/user/avatar--file
introPOST/api/user/intro--text

16. background — Background Mode ​

SubcommandHTTPPath
stateGET/api/background/state
enablePOST/api/background/enable
disablePOST/api/background/disable
quitPOST/api/background/quit

17. status — Runtime Status ​

SubcommandHTTPPathKey parameters
getGET/api/status-
streamSSEGET /api/status/stream-
debugPOST/api/status/debug--key --label --detail --level --clear

18. usage — LLM Usage ​

bash
python main.py usage summary --model gpt-4o
SubcommandHTTPPathKey parameters
summaryGET/api/usage/summary--model

19. memory — Memory Diagnostics ​

bash
python main.py memory writer-status --recent 30 --agent-id 1
SubcommandHTTPPathKey parameters
writer-statusGET/api/memory/writer-status--recent --agent-id

20. learn — Framework Docs ​

SubcommandHTTPPathKey parameters
docsGET/api/learn/docs-
docGET/api/learn/docs/{doc_key}doc_key

21. feedback — Proactive Message Rating ​

SubcommandHTTPPathKey parameters
proactivePOST/api/feedback/proactive--agent-id --rating(0/1) --decision-id --fired-at --signal-summary --action-category --act-score
statsGET/api/feedback/proactive/stats--agent-id

22. quick-inputs — Quick Inputs ​

SubcommandHTTPPathKey parameters
listGET/api/quick-inputs-
addPOST/api/quick-inputs--text
usePOST/api/quick-inputs/{qid}/useqid
deleteDELETE/api/quick-inputs/{qid}qid

23. quick-ask — Quick Ask ​

SubcommandHTTPPathKey parameters
createPOST/api/quick_ask/dialogue--quoted-text
archivePOST/api/quick_ask/dialogue/{dialogue_id}/archivedialogue_id

24. draft — Text Classification Drafts ​

SubcommandHTTPPathKey parameters
autoPOST/api/draft/from_text--text --agent-id
schedulePOST/api/draft/schedule_from_text--text --agent-id
todoPOST/api/draft/todo_from_text--text --agent-id

25. reports — Reports ​

SubcommandHTTPPathKey parameters
listGET/api/manager/reports-
by-agentGET/api/manager/reports/by-agent-
metaGET/api/manager/reports/meta-
contentGET/api/manager/reports/content--path
roll-upPOST/api/manager/reports/roll-up-
run-legacyPOST/api/manager/report--period

26. responses — OpenAI Responses API Proxy ​

SubcommandHTTPPathKey parameters
proxyPOST/v1/responsesJSON body (--body-file/--body-json)
proxy-streamSSEPOST /v1/responsesJSON body (streaming)

27. dev — Development Endpoints ​

SubcommandHTTPPath
fake-giftPOST/api/dev/fake_gift
gift-demoPOST/api/dev/gift_demo

28. gift — Gift v2 ​

SubcommandHTTPPathKey parameters
videoGET/api/gift/video/{decision_id}decision_id --output
swapPOST/api/gift/swap--agent-id --dialogue-id --node-id --candidate-index --keyword
openPOST/api/gift/open--agent-id --dialogue-id --node-id
purchasePOST/api/gift/purchase--agent-id --dialogue-id --node-id

29. feishu — Feishu ​

SubcommandHTTPPathKey parameters
test-webhookPOST/api/feishu/test_webhook--webhook-url --title --content
webhookPOST/api/feishu/webhookJSON body

30. monitor — Message Listening ​

bash
python main.py monitor list
python main.py monitor diag
python main.py monitor start wechat
python main.py monitor stop wechat
python main.py monitor settings-get
python main.py monitor file-roots
python main.py monitor file-roots-refresh --source wechat
SubcommandHTTPPathKey parameters
listGET/api/monitor-
settings-getGET/api/monitor/settings-
settings-putPUT/api/monitor/settingsJSON body
file-rootsGET/api/monitor/file-roots-
file-roots-refreshPOST/api/monitor/file-roots/refresh--source(wechat/qq) --allow-ui-probe
diagGET/api/monitor/_diag-
startPOST/api/monitor/{monitor_id}/startmonitor_id
stopPOST/api/monitor/{monitor_id}/stopmonitor_id

31. skills — Skills ​

bash
python main.py skills list
python main.py skills run 1 my_skill
python main.py skills stream run_abc123
python main.py skills agent-list 1
python main.py skills run-in-dialogue 1 my_skill --dialogue-id 3
python main.py skills doc my_skill
python main.py skills cancel-run run_abc123
SubcommandHTTPPathKey parameters
listGET/api/skills-
cancel-runPOST/api/skills/runs/{run_id}/cancelrun_id
unschedulePOST/api/agents/{agent_id}/skills/{skill_id}/unscheduleagent_id skill_id
activeGET/api/skills/runs/active-
streamSSEGET /api/skills/runs/{run_id}/streamrun_id
agent-listGET/api/agents/{agent_id}/skillsagent_id
docGET/api/skills/{skill_id}/docskill_id
kbGET/api/agents/{agent_id}/knowledge-basesagent_id
runPOST/api/agents/{agent_id}/skills/{skill_id}/runagent_id skill_id
run-in-dialoguePOST/api/agents/{agent_id}/skills/{skill_id}/run_in_dialogueagent_id skill_id --dialogue-id --parent-id

32. skill-forge — Skill Forging ​

SubcommandHTTPPathKey parameters
proposePOST/api/skills/forge/from-dialogue/proposeJSON body
reproposePOST/api/skills/forge/from-dialogue/reproposeJSON body
summaryPOST/api/skills/forge/summaryJSON body
previewPOST/api/skills/forge/previewJSON body
revisePOST/api/skills/forge/revise--skill-md --user-guidance --skill-id
commitPOST/api/skills/forge/commit--skill-id --skill-md --scope(global/agent) --agent-id --overwrite

33. skill-workshop — Skill Studio ​

SubcommandHTTPPathKey parameters
listGET/api/skill_workshop/skills-
uploadPOST/api/skill_workshop/upload--file
asset-getGET/api/skill_workshop/asset--output
rewritePOST/api/skill_workshop/rewriteJSON body
runPOST/api/skill_workshop/runJSON body
statusGET/api/skill_workshop/run/{run_id}/statusrun_id
imagesGET/api/skill_workshop/run/{run_id}/imagesrun_id
regen-imagePOST/api/skill_workshop/run/{run_id}/regenerate_imagerun_id JSON body
approve-imagesPOST/api/skill_workshop/run/{run_id}/approve_imagesrun_id JSON body
clipsGET/api/skill_workshop/run/{run_id}/clipsrun_id
clip-genPOST/api/skill_workshop/run/{run_id}/clips/{idx}/generaterun_id idx JSON body
concat-finalPOST/api/skill_workshop/run/{run_id}/concat_finalrun_id JSON body
historyGET/api/skill_workshop/history/{skill_id}skill_id
history-runGET/api/skill_workshop/history/{skill_id}/{run_id}skill_id run_id

34. cg — CG Cutscenes ​

SubcommandHTTPPathKey parameters
listGET/api/agents/manager/cg/list-
runPOST/api/agents/manager/cg/run--target-agent-id --target-skill-id --prompt
deleteDELETE/api/agents/{agent_id}/skills/{skill_id}/cgagent_id skill_id
skill-stateGET/api/skill_state-
previewPOST/api/agents/{agent_id}/skills/{skill_id}/cg/previewagent_id skill_id --seconds

35. asr — Speech Recognition ​

SubcommandHTTPPathKey parameters
transcribePOST/api/asr/transcribe--file --language
prewarmPOST/api/asr/prewarm-
call-prewarmPOST/api/call/prewarm--agent-id
dialog-prewarmPOST/api/dialog/prewarm-
focusPOST/api/focus/{mode}mode(dialog/call/idle) --agent-id --dialogue-id
gpu-tierGET/api/gpu_tier-
model-choicePOST/api/model_choice--model-id --choice(download/skip/never_prompt)

36. digital-human — Digital Human ​

SubcommandHTTPPathKey parameters
statusGET/api/digital_human/{agent_id}/statusagent_id
prewarmPOST/api/digital_human/{agent_id}/prewarmagent_id
unloadPOST/api/digital_human/{agent_id}/unloadagent_id
regen-voicePOST/api/digital_human/{agent_id}/regenerate_voiceagent_id

37. phone-call — Phone Calls ​

SubcommandHTTPPathKey parameters
statusGET/api/phone_call/{agent_id}/statusagent_id

38. recipes-library — Recipe Marketplace Library ​

SubcommandHTTPPathKey parameters
listGET/api/recipes/library-
installPOST/api/recipes/library/install--library-id --overwrite
publishPOST/api/recipes/library/publish--recipe-id --channel --author --version

39. recipes — Recipe CRUD ​

bash
python main.py recipes list
python main.py recipes get my_recipe
python main.py recipes catalog
python main.py recipes create --body-file manifest.json
python main.py recipes bind my_recipe 1
python main.py recipes validate my_recipe --body-json '{"section":"manifest"}'
python main.py recipes dry-run my_recipe --prompt "你好" --mock-response "模拟回复"
python main.py recipes eval my_recipe --agent-id 1 --timeout 120
python main.py recipes export-zip my_recipe --output my_recipe.zip
python main.py recipes import-zip --file my_recipe.zip
SubcommandHTTPPathKey parameters
catalogGET/api/recipes/catalog-
protocolGET/api/recipes/_meta/protocol-
listGET/api/recipes-
getGET/api/recipes/{recipe_id}recipe_id
export-zipGET/api/recipes/{recipe_id}/export_ziprecipe_id --output
import-zipPOST/api/recipes/import_zip--file
import-folderPOST/api/recipes/import_folderJSON body
createPOST/api/recipesJSON body
updatePUT/api/recipes/{recipe_id}recipe_id JSON body
deleteDELETE/api/recipes/{recipe_id}recipe_id
bindPOST/api/recipes/{recipe_id}/bind/{agent_id}recipe_id agent_id
unbindPOST/api/recipes/{recipe_id}/unbind/{agent_id}recipe_id agent_id
validatePOST/api/recipes/{recipe_id}/validaterecipe_id JSON body
chain-sourceGET/api/recipes/chain_source/{slot}slot
dry-runPOST/api/recipes/{recipe_id}/dry-runrecipe_id --prompt --mock-response
evalPOST/api/recipes/{recipe_id}/evalrecipe_id --agent-id --suite --max-cases --timeout --parallelism --save-baseline

40. agent-workshop — External Agent Import ​

SubcommandHTTPPathKey parameters
kindsGET/api/agent_workshop/kinds-
scanGET/api/agent_workshop/scan/{kind}kind
import-startPOST/api/agent_workshop/import/{kind}/startkind --need-digital-human --display-name --model
import-cancelPOST/api/agent_workshop/import/cancel--session-id
import-streamSSEGET /api/agent_workshop/import/{kind}/streamkind --session-id --approved-steps
customPOST/api/agent_workshop/custom--display-name --repo-url --cli-command --description --need-digital-human

41. agent-assets — Agent Asset Management ​

SubcommandHTTPPathKey parameters
upload-stagingPOST/api/agents/upload_staging--file --kind(figure/voice)
figure-job-startPOST/api/agents/{agent_id}/asset_job/figureagent_id --file
job-statusGET/api/agents/{agent_id}/asset_jobagent_id
job-streamSSEGET /api/agents/{agent_id}/asset_job/streamagent_id
job-retryPOST/api/agents/{agent_id}/asset_job/retryagent_id --stage
job-dismissDELETE/api/agents/{agent_id}/asset_jobagent_id
job-upload-stagePOST/api/agents/{agent_id}/asset_job/upload_stageagent_id --file --stage
voice-replacePOST/api/agents/{agent_id}/voice/replaceagent_id --file --transcript
greeting-regenPOST/api/agents/{agent_id}/greeting/regenerateagent_id

42. comm — Communication Hub ​

bash
python main.py comm messages --agent-id 1
python main.py comm post --body-json '{"agent_id":1,"content":"你好"}'
python main.py comm approvals-pending --agent-id 1
python main.py comm approval-respond --request-id req_abc --approved true --scope always
python main.py comm interrupt --agent-id 1 --reason "停!"
SubcommandHTTPPathKey parameters
messagesGET/api/communication/messages--agent-id --since --direction(agent_to_user/user_to_agent)
postPOST/api/communication/messagesJSON body
sendPOST/api/communication/sendJSON body
approvals-pendingGET/api/communication/approvals/pending--agent-id
approval-requestPOST/api/communication/approvals/requestJSON body
approval-respondPOST/api/communication/approvals/respond--request-id --approved --reason --scope
approval-statusGET/api/communication/approvals/{request_id}request_id
interruptPOST/api/communication/interrupt--agent-id --reason

43. flows — Flow Instances ​

bash
python main.py flows list --status running
python main.py flows get flow_abc123 --trace-tail 50
python main.py flows trace flow_abc123 --tail 100
python main.py flows cancel flow_abc123
SubcommandHTTPPathKey parameters
listGET/api/flows--status --template-id --limit
getGET/api/flows/{instance_id}instance_id --trace-tail
traceGET/api/flows/{instance_id}/traceinstance_id --tail
cancelPOST/api/flows/{instance_id}/cancelinstance_id

44. Output Formats ​

  • JSON responses: single-line JSON by default. Add --pretty for formatted output.
  • SSE streams: one JSON event per line. [DONE] marks the end of the stream.
  • File downloads: --output <path> specifies the save path; by default outputs a {ok, path, bytes} JSON.
  • Errors: HTTP ≥ 400 prints ! HTTP <status> to stderr.

45. Typical Usage ​

bash
# 完整工作流:创建 agent → 绑定 recipe → 开始对话
python main.py agents create --agent-id 5
python main.py recipes bind medical_triage 5
python main.py chat stream --prompt "分析这个病例" --agent-id 5

# 监控管理
python main.py monitor list
python main.py monitor start wechat
python main.py monitor start qq

# 技能开发
python main.py skill-forge propose --body-file proposal.json
python main.py skill-forge preview --body-file draft.json
python main.py skill-forge commit --skill-id my_skill --skill-md "$(cat SKILL.md)" --scope global

# Broker 开发完整流程
python main.py broker keygen --name mykey
python main.py broker pack workspace/manager/brokers/my_broker
python main.py broker sign my_broker.broker.zip --author-key mykey
python main.py broker verify my_broker.broker.zip --pretty
python main.py broker publish workspace/manager/brokers/my_broker \
  --author-key mykey --relay https://api.familiars.cn

Familiars · 多 Agent AI 桌面应用