Atlas / MCP servers / cronusl-1141 / AI Team OS

AI Team OSCAUTION

mcp/cronusl-1141/ai-team-os

Multi-agent team operating system for Claude Code. 108 MCP tools, 40+ agent templates, 10 lifecycle hooks, 7 pipeline workflows. Persistent teams, structured meetings, task wall, real-time React dashboard. No LangChain/AutoGen — pure CC native integration.

Verdict
CAUTION
Grade
F
Trust score
46 /100
Exposed tools
116 81r · 33w · 2d
Transport
stdio · streamable-http
License
MIT
Stars
368
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

English | 中文

Shared context, accountable work, native agents.

AI Team OS is a shared operating layer for Claude Code and Codex. Keep tasks, project memory, reports and team messages in one place, and follow work across sessions in one Dashboard. Each host keeps its native agent tools; the OS provides the durable record that makes their work understandable and reusable.

🤝 Codex is supported. Use Codex or Claude Code on its own, or connect both to the same OS task wall, project memory, reports, channels and Dashboard. Codex uses its own MCP and hook configuration; native agent tools, host settings and hook trust remain separate. See the installation and capability sections below for the per-host setup and boundaries.
⚡ v1.15.0 - One notice channel, sturdier hooks. Things OS needs you to know or do now come from one bilingual ledger, shown at session start, on your next message or when a turn ends, and each host hears only about its own install. Failed hook deliveries are counted and resent by later hooks, text meant for other agents is checked when it is written, and one shared digest leads the task wall. Codex users need to update the adapter once by hand; see the changelog. Full version history: CHANGELOG.md

[](https://python.org) [](LICENSE) [](https://fastapi.tiangolo.com) [](https://react.dev) [![MCP](https://img.shields.io/badge/M

Read from source at commit b34bd1e1f63fOBSERVED · 2026-10-03
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add dashboard --env API_KEY=${API_KEY} --env ECOSYSTEM_KEYWORDS=${ECOSYSTEM_KEYWORDS} --env MCP_PRIVATE_TEST_SECRET=${MCP_PRIVATE_TEST_SECRET} --env OPENAI_API_KEY=${OPENAI_API_KEY} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "dashboard": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "API_KEY": "${API_KEY}",
        "ECOSYSTEM_KEYWORDS": "${ECOSYSTEM_KEYWORDS}",
        "MCP_PRIVATE_TEST_SECRET": "${MCP_PRIVATE_TEST_SECRET}",
        "OPENAI_API_KEY": "${OPENAI_API_KEY}"
      }
    }
  }
}
03

Exposed tools (116)

81 read · 33 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
agent_activity_queryreadQuery Agent activity records for a team.
agent_listreadList a team
agent_reuse_recommendreadRecommend whether to reuse an existing sub-agent for a follow-up task.
agent_template_listreadList every Agent template CC can actually resolve.
agent_template_recommendreadRecommend Agent templates — and, for a known project type, a team shape.
agent_update_statuswriteUpdate an Agent
briefing_addwritePark a decision for the user while the user is NOT in the conversation.
briefing_dismissreadDismiss a Leader Briefing item (no action needed).
briefing_listreadList Leader Briefing items. Default shows pending items for user review.
briefing_resolvereadRecord the user
channel_mentionsreadGet channel messages that mention a specific agent.
channel_readreadRead messages from a channel.
channel_read_ackread把某频道的已读水位推进到你**实际读到**的那一条,清掉对应未读。
channel_sendwriteSend a message to a channel.
channel_unreadread某读者在某项目下的逐频道未读计数(谁在叫你、有几条、最新一条讲什么)。
channel_waitread等待指定对端的新消息:先补读,随后以 WebSocket 等待,不轮询模型。
context_resolvereadGet the current active OS context — active project, active teams, member list.
debate_code_reviewwriteStart a debate-style code review for a specific file or change.
debate_startwriteStart a structured 4-round debate meeting between an Advocate and a Critic.
decision_logreadQuery team decision log — task assignments, approach selections, Agent scheduling decisions.
diagnose_task_failurereadAuto-diagnose why a task failed and suggest fixes.
dismiss_project_registrationreadMark current cwd as dismissed for project registration — won
ecosystem_apply_architecture_mdwriteStage 1 writeback — submit architecture_md OR report failure.
ecosystem_apply_debate_resultwriteStage 2 writeback — submit debate conclusion to advance to ``debated``.
ecosystem_apply_quality_reviewwriteSubmit quality review result and release the claim lock.
ecosystem_apply_shallow_summarywriteStage 0 worker callback: write back a shallow summary OR report a failure.
ecosystem_claim_reviewreadClaim the next shallow_done repo for quality review.
ecosystem_claim_shallowreadClaim the next queued repo for shallow scanning (stage_status=
ecosystem_deep_review_cancelreadCancel an in-flight (stage_status=
ecosystem_deep_review_listreadList deep-reviews newest-first, optionally filtered by status.
ecosystem_deep_review_requestreadQueue a deep-review for a repo and return the dispatch prompt.
ecosystem_deep_review_request_batchreadStage 1 — Queue architecture-analysis dispatches for tag-filtered candidates.
ecosystem_deep_review_statusreadLook up the most recent deep-review for ``repo_id``.
ecosystem_diff_periodreadReturn a time-period diff computed dynamically from the per-repo event log.
ecosystem_index_diff_latestreadFetch the latest IndexDiff snapshot for the current project.
ecosystem_index_updatewriteTrigger ecosystem index update — runs scanner + computes diff.
ecosystem_link_debate_meetingreadStage 2 helper — link ``debate_start`` meeting id back to review rows.
ecosystem_link_integration_taskreadStage 3 helper — link integration task id back to review row.
ecosystem_mark_as_referencewriteStage 3 reference path — add ``lifecycle:reference`` tag + advance to ``referenced``.
ecosystem_quick_setupreadRecord data-source and scan-profile rows for the project.
ecosystem_rebuild_queries_from_reposreadReturn a recap of all search queries that have discovered repos in this project.
ecosystem_refreshreadOn-demand incremental refresh of the project
ecosystem_release_claimreadRelease a worker claim without submitting a quality review.
ecosystem_repo_eventsreadReturn event history for a single ecosystem repo.
ecosystem_repo_getreadGet holistic detail of an ecosystem repo (profile + tags + deep_reviews + relations + scan_run).
ecosystem_repo_manual_statusdestructiveSet (or clear) the human override on a repo
ecosystem_repo_tagsreadList all tags currently associated with a single ecosystem repo.
ecosystem_scanwriteScan popular Claude ecosystem repos (>=min_stars) and update ecosystem_repo_profiles.
ecosystem_scan_historyreadList recent scan runs ordered by started_at descending.
ecosystem_scan_periodicwriteRun an incremental or full ecosystem scan via the scanner service.
ecosystem_scan_statusreadFetch a single EcosystemScanRun by id.
ecosystem_searchreadQuery the project
ecosystem_search_by_capabilityreadSearch ecosystem repos by capability tags (reverse lookup from tag → repo).
ecosystem_shallow_queue_statusreadShow Stage 0 shallow-scan queue status for the active project.
ecosystem_start_integrationwriteStage 3 integrate path — build a task_create payload + tag the repo.
ecosystem_summary_by_tagreadList every repo carrying ``tag`` as a markdown table.
ecosystem_summary_healthreadPlatform self-check markdown: profile / scan / tag coverage / archive ratio.
ecosystem_summary_top_nreadTop-N markdown table of ecosystem repos.
ecosystem_summary_weeklyreadGenerate the past-N-days ecosystem briefing as markdown.
ecosystem_tag_apply_batchwriteApply Layer 1 + Layer 2 auto-tagging to a batch of ecosystem repos.
ecosystem_tag_apply_llm_resultwriteSubmit Layer 3 LLM tagging result from a sub-agent.
ecosystem_tag_dispatch_llmreadBuild a Layer 3 sub-agent dispatch plan for repos that need LLM fallback.
ecosystem_tag_listreadList ecosystem tag dictionary entries.
ecosystem_trigger_debatewriteStage 2 — Build debate dispatch payload (Leader still calls debate_start).
event_listreadList recent events in the system, optionally filtered.
failure_analysisreadRecord a failed task as a templated lesson entry (failure alchemy).
find_skillreadFind ecosystem skills/plugins using a 3-layer progressive loading system.
fleet_dispatchreadDispatch an operational instruction to another ship (CC session) in the fleet.
link_queryreadQuery cross-domain reference edges for an object (who references it / what it references).
link_tracereadTrace the reference neighborhood of an object (undirected fanout, depth <= 2).
meeting_attendance_checkreadCheck which expected participants have spoken in the current round.
meeting_concludereadConclude a meeting, marking it as completed.
meeting_createwriteCreate a team meeting and return a ready-to-use dispatch_plan for spawning participant Agents.
meeting_listreadList meetings for a team, optionally filtered by status.
meeting_read_messagesreadRead a meeting
meeting_send_messagewriteSend a discussion message in a meeting.
meeting_template_listreadList available meeting templates and their round structures.
meeting_updatewriteUpdate a meeting
memory_addwriteAdd a direction-layer memory — the team
memory_invalidatereadInvalidate a direction-layer memory — mark it invalid without deleting.
memory_listreadList direction-layer memories — valid entries by default, grouped by kind.
memory_reconcile_applywrite按需整理·应用:批量执行 LLM 精判确认后的操作(确定性,幂等)。
memory_reconcile_candidatesread按需整理·粗筛:返回情景层候选组 + 方向层清单 + 蒸馏素材 + 操作说明。
memory_searchreadSearch memory entries within one scope, ranked by BM25.
model_config_getreadGet model governance state: available models (auto-discovered from
model_config_setwriteSet the default startup model for new CC sessions (writes the
notice_dismisswriteStop showing one notice: for good, or for a number of hours.
notice_listreadList the notices OS shows the user (the
os_config_changereadChange the user
os_health_checkreadCheck the health status of the AI Team OS API service.
os_restart_apiwriteRestart the AI Team OS FastAPI process safely (standardized restart flow).
project_createwriteCreate a new project with a default Phase automatically created.
project_deletedestructiveDelete a project and everything filed under it. Irreversible.
project_listreadList all projects in the system.
project_summaryreadGet a quick project summary: status (active/inactive), teams, top tasks.
project_updatewriteUpdate a project
prompt_effectivenessreadReturn effectiveness statistics for Agent templates.
report_listreadList saved reports, optionally filtered by author, topic, or type.
report_readreadRead the full content of a saved report by ID.
report_savewriteSave a research/analysis report to the database.
task_createwriteCreate a new task in a project (not bound to a team).
task_execution_tracereadGet a task
task_list_projectreadGet the task wall — project-scoped by default, team-scoped on request.
task_memo_addwriteAdd a memo record to a task — for tracking progress, recording decisions, marking issues.
task_memo_readreadRead all memo records for a task — read before picking up a task to understand historical progress.
task_runwritePut a task on a team
task_statusreadGet one task
task_updatewriteUpdate a task
team_listreadList teams — active ones by default, newest first.
team_statusreadGet a team
unified_searchreadSearch across all OS knowledge: task memos, reports, and tasks.
usage_attributionreadReport token usage together with how much of it can actually be accounted for.
verify_completionreadVerify whether a task is truly complete.
workflow_getwriteGet a Workflow run
workflow_listreadList CC ultracode/Workflow runs tracked by the OS observability layer.
workflow_reconcilereadReconcile finished Workflow runs from disk into the OS (repair after OS was offline).
04

Trust audit

CAUTIONgrade F · trust 46/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (7 observation(s))
Network
declared (9 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (25)

MEDIUMInsecure crypto · crypto.weak_random · CWE-327, CWE-338
scripts/bench_ecosystem_search.py:139
kw = random.choice(keywords)
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
scripts/codex_adapter.py:876
print(f"MCP helper 路径不存在: {token}")
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
src/aiteam/memory/content_safety.py:77
"system prompt exfiltration (en)",
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
src/aiteam/memory/content_safety.py:87
"system prompt exfiltration (zh)",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/test_codex_send_event.py:312
secret = "/Users/private/secret"
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
tests/unit/test_memory_content_safety.py:81
"-----BEGIN RSA PRIVATE KEY-----",
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
ecosystem_repo_manual_status, project_delete
Why it matters. 2 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mcp.json.example
.mcp.json.example
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
tests/unit/test_permission_denied_recovery.py:19
return importlib.import_module(mod_name)
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
dashboard/tests/account-usage.test.mjs:160
new Function('require', 'module', 'exports', output)((name) => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
dashboard/tests/api-connection.test.mjs:17
new Function('exports', 'fetch', 'window', code)(exports, fetch, { location: { host: 'localhost' } });
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
dashboard/tests/api-refusal.test.mjs:17
new Function('exports', 'fetch', 'window', code)(exports, fetch, { location: { host: 'localhost' } });
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
dashboard/tests/language.test.mjs:18
new Function('require', 'exports', ...Object.keys(globals), code)(
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
dashboard/tests/notices.test.mjs:16
new Function('require', 'exports', code)((name) => mocks[name] ?? require(name), exports);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
scripts/migrate_to_project_dbs.py:62
return hashlib.md5(normalized.encode()).hexdigest()[:12]
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/aiteam/api/project_context.py:28
return hashlib.md5(normalized.encode()).hexdigest()[:12]
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/aiteam/api/session_probe.py:121
h = int(hashlib.md5(sid.encode()).hexdigest(), 16)
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/aiteam/memory/scoping.py:44
digest = hashlib.sha1(normalized.encode("utf-8")).hexdigest()[:16]
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
tests/unit/hooks/test_uninstall_main_chain.py:68
return hashlib.md5(path.read_bytes()).hexdigest()
LOWInsecure crypto · crypto.weak_random · CWE-327, CWE-338
tests/unit/services/test_plan_summary_equivalence.py:43
rows = sorted(price_history(random.Random(seed), 120), key=order_key)
LOWInsecure crypto · crypto.weak_random · CWE-327, CWE-338
tests/unit/services/test_plan_summary_equivalence.py:64
rows = sorted(price_history(random.Random(1000 + seed), 90), key=order_key)
LOWInsecure crypto · crypto.weak_random · CWE-327, CWE-338
tests/unit/services/test_plan_summary_equivalence.py:110
rows = sorted(plan_history(random.Random(4000 + seed), 90), key=order_key)
LOWInsecure crypto · crypto.weak_random · CWE-327, CWE-338
tests/unit/storage/test_ecosystem_search_extended.py:515
kw = random.choice(keywords)
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/test_workflow_reminder.py:550
pytest.param("git add ~/.ssh/id_rsa", "id_rsa", id="id-rsa"),
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/test_workflow_reminder.py:561
pytest.param('bash -o pipefail -c "git add id_rsa"', "id_rsa", id="bash-o-c"),
Why it matters. touches a credential store

Gates applied: no_behavioural_pass.

Audited 2026-10-03 · audit v0.4.1 · source sha b34bd1e1f63ffull audit observations/trust-audit/mcp-server/cronusl-1141__ai-team-os.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-03b34bd1e1f63fCAUTIONF46first audit
06

Questions

What is the AI Team OS MCP server?

Multi-agent team operating system for Claude Code. 108 MCP tools, 40+ agent templates, 10 lifecycle hooks, 7 pipeline workflows. Persistent teams, structured meetings, task wall, real-time React dashboard. No LangChain/AutoGen — pure CC native integration.

What tools does AI Team OS expose?

116 in total: 81 read-only, 33 that write, and 2 that can delete or overwrite (ecosystem_repo_manual_status, project_delete). Every one is listed on this page with its risk.

Is AI Team OS safe to connect to an agent?

With care. The audit graded it F (46/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does AI Team OS need?

It reads API_KEY, ECOSYSTEM_KEYWORDS, MCP_PRIVATE_TEST_SECRET and OPENAI_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does AI Team OS run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as dashboard at 0.0.0.

How current is this page?

The grade is for one exact copy of the source (b34bd1e1f63f), read on 2026-10-03. The repository is watched and re-audited when it changes.

Advertisement