CloserAI - a local-first, model-agnostic, permission-transparent desktop AI workbench built on DeepSeek Harness.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport 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 commit 5d1f491 · analyzer v33 · 1w ago
skills & prompt files 1
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 81
filesystem 35
- fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/scripts/copy-preload.mjs :1
import { copyFileSync, mkdirSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/scripts/copy-runtime-node-modules.js :8
import { cp } from 'node:fs/promises' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/backend.ts :1
import { mkdirSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/capabilities.ts :1
import { readFileSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/dsh-home.ts :1
import { existsSync, readFileSync, rmSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/dsh-mcp.ts :1
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/dsh-settings.ts :1
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/fs-atomic.ts :1
import { mkdirSync, renameSync, rmSync, writeFileSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/ipc.ts :2
import { writeFile } from 'node:fs/promises' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/mcp-store.ts :1
import { readFileSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/mode-store.ts :1
import { readFileSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/presets.ts :1
import { cp, mkdir, readFile, writeFile } from 'node:fs/promises'
show 23 more
- fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/project-store.ts :1
import { readFileSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/provider-store.ts :1
import { readFileSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/secrets.ts :1
import { readFileSync } from 'node:fs' - fs sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/session-store.ts :1
import { copyFile, mkdir, readdir, rm, stat } from 'node:fs/promises' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/capabilities.test.ts :1
import { mkdtempSync, readFileSync, rmSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/dsh-home.test.ts :1
import { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/dsh-mcp.e2e.test.ts :1
import { mkdtempSync, rmSync, writeFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/dsh-mcp.test.ts :1
import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/dsh-settings.test.ts :1
import { mkdtempSync, readFileSync, rmSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/fs-atomic.test.ts :1
import { mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/mcp-store.test.ts :1
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/mode-store.test.ts :1
import { mkdtempSync, rmSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/persistence.test.ts :1
import { mkdtempSync, readdirSync, rmSync, writeFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/preload-contract.test.ts :1
import { readFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/presets.test.ts :1
import { mkdtempSync, readFileSync, rmSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/project-store.test.ts :1
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/provider-store.test.ts :1
import { mkdtempSync, rmSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/secrets.test.ts :1
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/security.test.ts :1
import { readFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/session-store.test.ts :1
import { mkdirSync, mkdtempSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/scripts/audit-licenses.mjs :4
import { readdirSync, existsSync, readFileSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/scripts/generate-sbom.mjs :4
import { readdirSync, existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs' - fs (weak) sb1733831438-maker-DSH-closerAI-5d1f491/scripts/whale-icon.mjs :1
import { readFileSync, writeFileSync, mkdirSync } from 'node:fs'
shell / exec 3
- shell (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/dsh-mcp.e2e.test.ts :5
import { spawn, type SpawnOptions } from 'node:child_process' - shell (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/persistence.test.ts :4
import { spawn, type SpawnOptions } from 'node:child_process' - shell sb1733831438-maker-DSH-closerAI-5d1f491/packages/supervisor/src/supervisor.ts :2
import { spawn, type ChildProcess } from 'node:child_process'
network 5
- net sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/src/main/providers.ts :99
const response = await fetch(`${options.baseUrl}/chat/completions`, { - net sb1733831438-maker-DSH-closerAI-5d1f491/packages/mock-provider/src/server.ts :1
import { createServer, type IncomingMessage, type ServerResponse } from 'node:http' - net (weak) sb1733831438-maker-DSH-closerAI-5d1f491/packages/mock-provider/test/server.test.ts :18
const res = await fetch(`${server.url}/health`) - net sb1733831438-maker-DSH-closerAI-5d1f491/packages/supervisor/src/health.ts :1
import { connect } from 'node:net' - net (weak) sb1733831438-maker-DSH-closerAI-5d1f491/packages/supervisor/test/fixtures/fake-dsh.mjs :8
import { createServer } from 'node:http'
secrets 1
- secrets (weak) sb1733831438-maker-DSH-closerAI-5d1f491/apps/desktop/test/dsh-mcp.test.ts :66
expect(patch).toContain('!!js process.env.CLOSERAI_MCP_GITHUB_GITHUB_TOKEN')
declared dependencies 8
- @commitlint/cli@^19.8.1
- @commitlint/config-conventional@^19.8.1
- @eslint/js@10.0.1
- eslint@10.8.1
- eslint-config-prettier@10.1.8
- globals@17.11.0
- prettier@3.9.6
- typescript-eslint@8.67.0
obfuscation 2
- dynamic require()/import() sb1733831438-maker-DSH-closerAI-5d1f491/scripts/audit-licenses.mjs :14
require(root + '/apps/desktop/package.json').dependencies - dynamic require()/import() sb1733831438-maker-DSH-closerAI-5d1f491/scripts/generate-sbom.mjs :11
const desktopPkg = require(root + '/apps/desktop/package.json')