Agent-Nuvira: Multi-agent AI coding CLI — plan, write, review, test, and publish code with local models (Ollama) or cloud APIs (Groq, NVIDIA NIM, Google Gemini, OpenRouter)
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed v2.7.3 · analyzer v33 · 2d ago
skills & prompt files 40
- skill package/.agents/skills/a11y-audit/SKILL.md
- skill package/.agents/skills/academic-research/SKILL.md
- skill package/.agents/skills/accounting-integration/SKILL.md
- skill package/.agents/skills/api-call/SKILL.md
- skill package/.agents/skills/api-creation/SKILL.md
- skill package/.agents/skills/api-design/SKILL.md
- skill package/.agents/skills/api-testing/SKILL.md
- skill package/.agents/skills/api-versioning/SKILL.md
- skill package/.agents/skills/approval-tool/SKILL.md
- skill package/.agents/skills/auth-setup/SKILL.md
- skill package/.agents/skills/autonomous-agents/SKILL.md
- skill package/.agents/skills/backup-recovery/SKILL.md
- skill package/.agents/skills/backup-strategy/SKILL.md
- skill package/.agents/skills/binary-extensions/SKILL.md
- skill package/.agents/skills/blob-storage/SKILL.md
- skill package/.agents/skills/budget-config/SKILL.md
- skill package/.agents/skills/cache-setup/SKILL.md
- skill package/.agents/skills/capacity-planning/SKILL.md
- skill package/.agents/skills/cdn-setup/SKILL.md
- skill package/.agents/skills/chaos-engineering/SKILL.md
- skill package/.agents/skills/checkpoint-manager/SKILL.md
- skill package/.agents/skills/ci-cd-setup/SKILL.md
- skill package/.agents/skills/cicd-advanced/SKILL.md
- skill package/.agents/skills/cli-tool/SKILL.md
- skill package/.agents/skills/cloud-deploy/SKILL.md
- skill package/.agents/skills/cloud-migration/SKILL.md
- skill package/.agents/skills/code-assessment/SKILL.md
- skill package/.agents/skills/code-refactor/SKILL.md
- skill package/.agents/skills/code-review/SKILL.md
- skill package/.agents/skills/compliance-check/SKILL.md
- skill package/.agents/skills/container-security/SKILL.md
- skill package/.agents/skills/container-supervision/SKILL.md
- skill package/.agents/skills/cors-setup/SKILL.md
- skill package/.agents/skills/cost-optimization/SKILL.md
- skill package/.agents/skills/cron-job/SKILL.md
- skill package/.agents/skills/cron-setup/SKILL.md
- skill package/.agents/skills/cross-platform-build/SKILL.md
- skill package/.agents/skills/data-analysis/SKILL.md
- skill package/.agents/skills/data-governance/SKILL.md
- skill package/.agents/skills/data-lineage/SKILL.md
danger signals4
- suspicious endpoint api.telegram.org package/dist/cli/gateway.js :566
const res = await fetch(`https://api.telegram.org/bot${token}/getMe`, { signal: AbortSignal.timeout(10_000) }); - suspicious endpoint api.telegram.org package/dist/gateway/adapters.js :88
return fetch(`https://api.telegram.org/bot${this.token}/${method}`, { - suspicious endpoint api.telegram.org package/dist/tools/send-message-tool.js :85
const url = `https://api.telegram.org/bot${token}/sendMessage`; - suspicious endpoint api.telegram.org package/dist/web-dashboard/server.js :4851
const r = await fetch(`https://api.telegram.org/bot${token}/getMe`, { signal: AbortSignal.timeout(10_000) });
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 912
filesystem 187
- fs package/dist/agent-sdk/src/register.js :23
import { readFileSync, writeFileSync, existsSync } from 'node:fs'; - fs package/dist/agent-sdk/src/scaffold.js :12
import { mkdirSync, writeFileSync, existsSync } from 'node:fs'; - fs package/dist/agents/agents/branch-automation-agent.js :16
import { existsSync, writeFileSync, openSync } from 'node:fs'; - fs package/dist/agents/agents/branch-automation-hooks.js :11
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs'; - fs package/dist/agents/agents/context-gatherer.js :16
import { existsSync, readFileSync, statSync, readdirSync } from 'node:fs'; - fs package/dist/agents/agents/debugger.js :16
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs'; - fs package/dist/agents/agents/git-agent.js :27
import { writeFileSync, unlinkSync, mkdtempSync } from 'node:fs'; - fs package/dist/agents/agents/github-release-agent.js :18
import { existsSync, readFileSync, writeFileSync, unlinkSync, mkdtempSync } from 'node:fs'; - fs package/dist/agents/agents/package-agent.js :17
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs package/dist/agents/agents/runner.js :23
import { existsSync, readFileSync } from 'node:fs'; - fs package/dist/agents/agents/tester.js :9
import { existsSync, readFileSync, writeFileSync, mkdirSync, cpSync, rmSync, readdirSync } from 'node:fs'; - fs package/dist/agents/agents/writer.js :12
import { existsSync, readFileSync } from 'node:fs';
show 28 more
- fs package/dist/agents/checkpoint-store.js :18
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs'; - fs package/dist/agents/credential-store.js :19
import { existsSync, readFileSync, writeFileSync, unlinkSync } from 'node:fs'; - fs package/dist/agents/edit-module.js :12
import { existsSync, readFileSync } from 'node:fs'; - fs package/dist/agents/execute-module.js :11
import { existsSync, readFileSync } from 'node:fs'; - fs package/dist/agents/inspect-module.js :9
import { existsSync, readFileSync, statSync, readdirSync } from 'node:fs'; - fs package/dist/agents/nvda-addon.js :2
import * as fs from 'fs'; - fs package/dist/agents/orchestrator.js :19
import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync, statSync } from 'node:fs'; - fs package/dist/agents/phase-engine.js :4
import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync, readdirSync } from 'node:fs'; - fs package/dist/agents/prompt-assembly.js :18
import { existsSync, readFileSync, readdirSync } from 'node:fs'; - fs package/dist/agents/safe-execution-layer.js :11
import { existsSync } from 'node:fs'; - fs package/dist/agents/task-execution-pipeline.js :19
import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs'; - fs (weak) package/dist/agents/test-module.js :12
import { existsSync, readFileSync, writeFileSync, mkdirSync, cpSync, rmSync, readdirSync, mkdtempSync } from 'node:fs'; - fs package/dist/agents/tool-calling-agent.js :20
import { existsSync, readFileSync, readdirSync } from 'node:fs'; - fs package/dist/agents/tools/delegation.js :24
import { readFileSync } from 'node:fs'; - fs package/dist/agents/utils/file-tree.js :16
import { readdir } from 'node:fs/promises'; - fs package/dist/cli/agent.js :18
import { existsSync, mkdirSync, writeFileSync } from 'node:fs'; - fs package/dist/cli/audit.js :19
import { existsSync, readFileSync, writeFileSync } from 'node:fs'; - fs package/dist/cli/ci.js :20
import { readFileSync, existsSync } from 'node:fs'; - fs package/dist/cli/code-map.js :19
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs'; - fs package/dist/cli/doctor.js :23
import { existsSync, mkdirSync, readFileSync } from 'node:fs'; - fs package/dist/cli/duties.js :19
*/ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs package/dist/cli/edit.js :2
import { readFileSync, writeFileSync, existsSync } from 'node:fs'; - fs package/dist/cli/execute.js :19
import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync } from 'node:fs'; - fs package/dist/cli/federation.js :23
import { existsSync, writeFileSync, readFileSync, mkdirSync } from 'node:fs'; - fs package/dist/cli/gateway.js :14
import { readFileSync } from 'node:fs'; - fs package/dist/cli/init.js :15
import { existsSync, mkdirSync, writeFileSync, readFileSync, readdirSync } from 'node:fs'; - fs package/dist/cli/memory.js :28
import * as fs from 'fs'; - fs package/dist/cli/model.js :21
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
147 more not shown — this panel samples each group; the count above is the real total.
shell / exec 51
- shell package/dist/agents/agents/branch-automation-agent.js :20
import { execSync, spawn } from 'node:child_process'; - shell package/dist/agents/agents/branch-automation-hooks.js :14
import { execSync } from 'node:child_process'; - shell package/dist/agents/agents/debugger.js :18
import { execSync } from 'node:child_process'; - shell package/dist/agents/agents/git-agent.js :26
import { execSync } from 'node:child_process'; - shell package/dist/agents/agents/github-release-agent.js :21
import { execSync } from 'node:child_process'; - shell package/dist/agents/agents/gitlab-agent.js :143
const { execSync } = await import('node:child_process'); - shell package/dist/agents/agents/issue-triage-agent.js :29
import { execSync } from 'node:child_process'; - shell package/dist/agents/agents/package-agent.js :19
import { execSync } from 'node:child_process'; - shell package/dist/agents/agents/pr-review-agent.js :23
import { execSync } from 'node:child_process'; - shell package/dist/agents/credential-store.js :23
import { execSync } from 'node:child_process'; - shell package/dist/agents/orchestrator.js :21
import { spawnSync } from 'node:child_process'; - shell package/dist/agents/tool-calling-agent.js :22
import { spawnSync } from 'node:child_process';
show 28 more
- shell package/dist/cli/dashboard-restart.js :15
import { execSync } from 'node:child_process'; - shell package/dist/cli/dashboard.js :25
import { spawn, execSync } from 'node:child_process'; - shell package/dist/cli/doctor.js :22
import { execSync } from 'node:child_process'; - shell package/dist/cli/process-control.js :25
import { execSync, execFileSync } from 'node:child_process'; - shell package/dist/config/workspace.js :29
import { execSync } from 'node:child_process'; - shell package/dist/enterprise/vault.js :58
import { execFileSync } from 'node:child_process'; - shell package/dist/inference/local-adapter.js :2
import { spawn } from 'node:child_process'; - shell package/dist/learning/eval-framework.js :33
import { execSync } from 'node:child_process'; - shell package/dist/learning/skills-registry.js :28
import { execFileSync } from 'node:child_process'; - shell package/dist/memory/embedder.js :16
import { spawn } from 'node:child_process'; - shell (weak) package/dist/sandbox/manager.js :33
import { spawn } from 'node:child_process'; - shell package/dist/skills/daytona-executor.js :17
import { spawn } from 'node:child_process'; - shell package/dist/skills/modal-executor.js :18
import { spawn } from 'node:child_process'; - shell package/dist/skills/sandbox-executor.js :18
import { spawn } from 'node:child_process'; - shell package/dist/skills/skill-executor.js :14
import { spawn } from 'node:child_process'; - shell package/dist/team/memory.js :24
import { execSync } from 'node:child_process'; - shell package/dist/tools/browser-tool.js :26
import { spawn } from 'node:child_process'; - shell package/dist/tools/clone-repo.js :26
import { execFileSync } from 'node:child_process'; - shell package/dist/tools/code-execution.js :12
import { spawn } from 'node:child_process'; - shell package/dist/tools/computer-use-tool.js :12
import { execSync, spawn } from 'child_process'; - shell package/dist/tools/cronjob-tools.js :220
const { spawn } = await import('node:child_process'); - shell package/dist/tools/daemon-pool.js :11
import { spawn } from 'node:child_process'; - shell package/dist/tools/desktop-ui.js :20
import { spawn } from 'node:child_process'; - shell package/dist/tools/docker-tool.js :15
import { spawn } from 'node:child_process'; - shell package/dist/tools/git-tool.js :28
* - argv-array exec (execFileSync, NO shell) — the message/files are - shell package/dist/tools/loop-project-context.js :30
import { spawnSync } from 'node:child_process'; - shell package/dist/tools/modality/shared.js :10
import { execFileSync } from 'node:child_process'; - shell package/dist/tools/modality/voice.js :12
import { execFileSync } from 'node:child_process';
11 more not shown — this panel samples each group; the count above is the real total.
network 57
- net package/.agents/skills/api-call/call.js :16
const https = require('https'); - net package/.agents/skills/api-call/call.mjs :16
import https from 'https'; - net package/dist/agents/agents/github-release-agent.js :373
const response = await fetch(`https://api.github.com/repos/${repo}/releases`, { - net package/dist/agents/agents/gitlab-api-client.js :267
const response = await fetch(`${this.baseUrl}${path}`, { - net package/dist/agents/agents/issue-triage-agent.js :280
const response = await fetch(`https://api.github.com${path}`, { - net package/dist/agents/agents/pr-review-agent.js :150
const response = await fetch(`https://api.github.com${path}`, { - net package/dist/cli/bedrock.js :327
const res = await fetch(`${runtimeBase}/openai/v1/chat/completions`, { - net package/dist/cli/dashboard-restart.js :21
const res = await fetch(url, { signal: controller.signal }); - net package/dist/cli/doctor.js :110
const modelsRes = await fetch(`${base}/models`, { - net package/dist/cli/federation.js :397
const response = await fetch(`http://${config.host}:${config.port}/federation/health`); - net package/dist/cli/gateway.js :566
const res = await fetch(`https://api.telegram.org/bot${token}/getMe`, { signal: AbortSignal.timeout(10_000) }); - net package/dist/federation/a2a-client.js :13
import { request as httpRequest } from 'node:http';
show 28 more
- net package/dist/federation/a2a-server.js :15
import { createServer } from 'node:http'; - net package/dist/federation/client.js :13
import { request as httpRequest } from 'node:http'; - net package/dist/federation/server.js :12
import { createServer } from 'node:http'; - net package/dist/gateway/adapters.js :15
import { createServer } from 'node:http'; - net package/dist/inference/anthropic-adapter.js :110
const response = await fetch(`${this.baseUrl}/v1/messages`, { - net package/dist/inference/gemini-adapter.js :53
const response = await fetch(url, { - net package/dist/inference/groq-adapter.js :80
const response = await fetch(`${GROQ_BASE_URL}/chat/completions`, { - net package/dist/inference/local-adapter.js :16
return await fetch(url, { ...init, signal: controller.signal }); - net package/dist/inference/nim-adapter.js :50
const response = await fetch(url, { - net package/dist/inference/openai-compat-adapter.js :163
const response = await fetch(chatUrl(this.baseUrl, model, this.meta), { - net package/dist/inference/openrouter-adapter.js :46
const response = await fetch(`${OPENROUTER_BASE_URL}/chat/completions`, { - net package/dist/inference/sse.js :58
const response = await fetch(url, { - net package/dist/inference/tools.js :62
const response = await fetch(url, { - net package/dist/learning/skills-hub.js :143
// ─── Index fetch (with TTL cache) ─────────────────────────────────────────── - net package/dist/learning/skills-registry.js :87
const res = await fetch(`${base.replace(/\/$/, '')}/index.json`, { - net package/dist/mcp/mcp-oauth.js :138
const response = await fetch(state.config.tokenEndpoint, { - net package/dist/tools/browser-camofox.js :87
const response = await fetch(`${this.baseUrl}/health`, { - net package/dist/tools/browser-tool.js :528
const response = await fetch(`http://localhost:${this.cdpPort}/json/version`); - net package/dist/tools/delegation-system.js :392
const response = await fetch(config.endpoint, { - net package/dist/tools/discord-tool.js :34
const response = await fetch(url, options); - net package/dist/tools/feishu-tools.js :31
const response = await fetch(`${this.baseUrl}/auth/v3/tenant_access_token/internal`, { - net package/dist/tools/homeassistant-tool.js :35
const response = await fetch(url, options); - net package/dist/tools/image-video-tool.js :29
const response = await fetch('https://api.openai.com/v1/images/generations', { - net package/dist/tools/managed-gateway.js :67
const response = await fetch(this.config.endpoint, { - net package/dist/tools/messaging-tool.js :45
const response = await fetch(url, { - net package/dist/tools/microsoft-graph.js :27
const response = await fetch(`https://login.microsoftonline.com/${this.config.tenantId}/oauth2/v2.0/token`, { - net package/dist/tools/modality/generic-caller.js :115
const response = await fetch(provider.baseUrl + endpoint, { - net package/dist/tools/modality/image-gen.js :19
const res = await fetch(url);
17 more not shown — this panel samples each group; the count above is the real total.
secrets 33
- secrets package/.agents/skills/api-call/call.js :149
const apiKey = process.env.API_KEY; - secrets package/.agents/skills/api-call/call.mjs :149
const apiKey = process.env.API_KEY; - secrets package/dist/agents/agents/github-release-agent.js :346
const token = process.env.GITHUB_API_KEY || - secrets package/dist/agents/agents/gitlab-api-client.js :14
return process.env.GITLAB_TOKEN || process.env.GITLAB_ACCESS_TOKEN || ''; - secrets package/dist/agents/agents/issue-triage-agent.js :85
this.ghToken = process.env.GH_TOKEN || process.env.GITHUB_TOKEN || ''; - secrets package/dist/agents/agents/package-agent.js :158
if (process.env.NPM_TOKEN) { - secrets package/dist/agents/agents/pr-review-agent.js :39
this.token = process.env.GH_TOKEN || process.env.GITHUB_TOKEN || ''; - secrets package/dist/agents/credential-store.js :70
if (process.env.NPM_TOKEN) { - secrets package/dist/agents/phase-engine.js :138
const hasGitCreds = !!(process.env.GITHUB_TOKEN || process.env.GH_TOKEN); - secrets package/dist/cli/bedrock.js :115
const currentKey = process.env.AWS_BEARER_TOKEN || ''; - secrets package/dist/cli/federation.js :213
const secret = options.secret || config.secret || process.env.FEDERATION_SECRET || ''; - secrets package/dist/cli/publish.js :70
if (creds.git.token || process.env.GITHUB_API_KEY || process.env.GH_TOKEN) {
show 21 more
- secrets package/dist/config/auth.js :16
secret: process.env.JWT_SECRET ?? 'supersecret', - secrets package/dist/config/jwt.js :21
secret: process.env.JWT_SECRET ?? 'dev-secret-key', - secrets package/dist/config/keys.js :14
exports.JWT_SECRET = process.env.JWT_SECRET ?? 'dev-secret-key'; - secrets package/dist/federation/server.js :419
resolvedConfig.secret = process.env.FEDERATION_SECRET || ''; - secrets package/dist/gateway/adapters.js :995
this.authToken = authToken ?? process.env.TWILIO_AUTH_TOKEN ?? ''; - secrets package/dist/passport.js :12
secretOrKey: process.env.JWT_SECRET || 'default_secret', // Replace with a strong secret in production - secrets package/dist/routes/auth.js :10
const JWT_SECRET = process.env.JWT_SECRET; - secrets package/dist/skills/bundled-skills.js :815
' const decoded = jwt.verify(token, process.env.JWT_SECRET);', - secrets package/dist/tools/child-agent-worker.js :74
this.apiKey = process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY || ''; - secrets package/dist/tools/discord-tool.js :166
const botToken = token || process.env.DISCORD_BOT_TOKEN || ''; - secrets package/dist/tools/feishu-tools.js :200
appSecret: process.env.FEISHU_APP_SECRET || '', - secrets package/dist/tools/homeassistant-tool.js :137
const haToken = token || process.env.HASS_TOKEN || ''; - secrets package/dist/tools/microsoft-graph.js :198
clientSecret: process.env.MICROSOFT_CLIENT_SECRET || '', - secrets package/dist/tools/modality/modality-catalog.js :62
available: !!process.env.OPENAI_API_KEY, - secrets package/dist/tools/neutts-synth.js :23
apiKey: config.apiKey || process.env.NEUTTS_API_KEY || '', - secrets package/dist/tools/openrouter-client.js :22
this.apiKey = config?.apiKey || process.env.OPENROUTER_API_KEY || ''; - secrets package/dist/tools/send-message-tool.js :81
const token = process.env.TELEGRAM_BOT_TOKEN; - secrets package/dist/tools/tts-streaming.js :122
if (process.env.ELEVENLABS_API_KEY) { - secrets package/dist/tools/video-generation.js :20
apiKey: config.apiKey || process.env.FAL_KEY || '', - secrets package/dist/tools/web-research.js :163
const jinaKey = process.env.JINA_API_KEY; - secrets package/dist/web-dashboard/server.js :994
const apiKey = process.env.GROQ_API_KEY;
database 1
- db package/dist/tools/delegation-state.js :31
const Database = require('better-sqlite3');
install hooks 2
- prepack package/package.json :31
npm run build - prepublishOnly package/package.json :32
npm run build && npm test
declared dependencies 26
- @modelcontextprotocol/sdk@^1.30.0
- @microsoft/recognizers-text-date-time@^1.3.2
- @vscode/ripgrep@^1.18.0
- baileys@7.0.0-rc14
- chalk@^5.3.0
- commander@^12.0.0
- execa@^8.0.1
- ink@^5.2.1
- inquirer@^9.3.0
- node-cron@^4.6.0
- ora@^8.0.0
- qrcode@^1.5.4
show 14 more
- react@^18.3.1
- typescript@^5.3.0
- zod@^4.4.3
- @types/inquirer@^9.0.10
- @types/node@^20.11.0
- @types/qrcode@^1.5.6
- @types/react@^18.3.31
- @types/ws@^8.18.1
- ink-testing-library@^4.0.0
- tsx@^4.7.0
- vitest@^4.1.10
- @faiss-node/native@^0.1.11
- @huggingface/transformers@^4.2.0
- @napi-rs/keyring@^1.3.0
clipboard 1
- clipboard shell call package/dist/tools/desktop-ui.js :374
content = await runCommand('pbpaste', []);
perm:untrusted 1
- untrusted package/src/web-dashboard/public/assets/index-C4frng1Q.js :67
tplaceSearch(t){try{const r=await(await fetch(`${this.baseUrl}/api/skills/marketplace?q=${encodeURIComponent(t)}`,{headers:wa()})).json();return Array.isArray(r.results)?r.results:[]}catch{return[]}}a