AI coding agent optimized for small LLMs (8B-35B parameters)
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 31 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
adaptive
-
chain
-
context
-
contract
-
critique
-
error
-
escalation
-
git
-
image
-
lsp
-
mcp-client
-
plan
-
policy
-
quality
-
read_guard
-
reasoning
-
repair
-
retry
-
reviewer
-
router
-
smallcode_agent
-
smallcode_bash
-
smallcode_memory_load
-
smallcode_memory_remember
-
smallcode_patch
-
smallcode_read_file
-
smallcode_search
-
thinking
-
timeout
-
tool_call
-
warning
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 121
filesystem 38
- fs package/bin/commands.js :4
const fs = require('fs'); - fs package/bin/config.js :5
const fs = require('fs'); - fs package/bin/escalation.js :8
const fs = require('fs'); - fs package/bin/eval_runner.js :5
const fs = require('fs'); - fs package/bin/executor.js :11
const fs = require('fs'); - fs package/bin/governor.js :5
const fs = require('fs'); - fs package/bin/init.js :6
const fs = require('fs'); - fs package/bin/mcp_bridge.js :6
const fs = require('fs'); - fs package/bin/memory.js :13
const fs = require('fs'); - fs package/bin/model_client.js :9
const fs = require('fs'); - fs package/bin/provider-wizard/status.js :4
const fs = require('fs'); - fs package/bin/provider-wizard/wizard.js :5
const fs = require('fs'); - fs package/bin/rag-index.js :4
const fs = require('fs'); - fs package/bin/smallcode.js :10
const fs = require('fs'); - fs package/bin/trace_recorder.js :5
const fs = require('fs'); - fs package/src/api/index.js :236
const fs = require('fs'); - fs package/src/compiled/features/verify_and_fix.js :11
const fs = require('fs'); - fs package/src/knowledge/loader.js :37
const fs = require('fs'); - fs package/src/lsp/client.js :10
const fs = require('fs'); - fs package/src/plugins/loader.js :30
const fs = require('fs'); - fs package/src/plugins/skills.js :21
const fs = require('fs'); - fs package/src/rag/index_store.js :3
const fs = require('fs'); - fs package/src/session/bootstrap.js :25
const fs = require('fs'); - fs package/src/session/contract.js :33
const fs = require('fs'); - fs package/src/session/contract_store.js :23
const fs = require('fs'); - fs package/src/session/dependency_graph.js :16
const fs = require('fs'); - fs package/src/session/images.js :8
const fs = require('fs'); - fs package/src/session/persistence.js :8
const fs = require('fs'); - fs package/src/session/references.js :17
const fs = require('fs'); - fs package/src/session/share.js :4
const fs = require('fs'); - fs package/src/session/snapshot.js :28
const fs = require('fs'); - fs package/src/session/tdd_state.js :47
const fs = require('fs'); - fs package/src/session/undo.js :5
const fs = require('fs'); - fs package/src/tools/file_tree.js :25
const fs = require('fs'); - fs package/src/tools/hybrid_search.js :26
const fs = require('fs'); - fs package/src/tools/mcp_client.js :20
const fs = require('fs'); - fs package/src/tools/read_tracker.js :28
const fs = require('fs'); - fs package/src/tools/test_runner.js :28
const fs = require('fs');
shell / exec 19
- shell package/bin/commands.js :221
const { execSync } = require('child_process'); - shell package/bin/executor.js :34
const { execSync } = require('child_process'); - shell package/bin/governor.js :4
const { execSync, execFileSync } = require('child_process'); - shell package/bin/mcp_bridge.js :4
const { spawn } = require('child_process'); - shell package/bin/model_client.js :184
const { execFileSync, execSync } = require('child_process'); - shell package/bin/rag-index.js :7
const cp = require('child_process'); - shell package/bin/smallcode.js :8
const { spawn } = require('child_process'); - shell package/bin/trace_recorder.js :182
`const { execSync } = require('child_process');`, - shell package/build.js :4
const { execSync } = require('child_process'); - shell package/src/api/index.js :279
const { execSync } = require('child_process'); - shell package/src/compiled/cognition/validate.js :365
"interface RegExp { test(s: string): boolean; exec(s: string): string[] | null; source: string; flags: string }", - shell package/src/lsp/client.js :8
const { spawn } = require('child_process'); - shell package/src/session/git_context.js :5
const { execFileSync } = require('child_process'); - shell package/src/session/multi.js :11
const { fork } = require('child_process'); - shell package/src/session/share.js :7
const { execFileSync } = require('child_process'); - shell package/src/tools/mcp_client.js :18
const { spawn } = require('child_process'); - shell (weak) package/src/tools/run_tests.js :40
const { execSync } = require('child_process'); - shell package/src/tools/shell_session.js :27
const { spawn } = require('child_process'); - shell package/src/tui/fullscreen.js :918
const { execSync } = require('child_process');
network 13
- net package/bin/commands.js :41
const resp = await fetch(`${config.model.baseUrl}/models`, { headers: modelListHeaders }); - net package/bin/config.js :290
const response = await fetch(`${baseUrl}/models`, { headers }); - net package/bin/escalation.js :150
const response = await fetch(`${this.baseUrl}/chat/completions`, { - net package/bin/model_client.js :56
const response = await fetch(`${baseUrl}/chat/completions`, { - net package/bin/provider-wizard/wizard.js :56
const res = await fetch(`${url}/models`, { - net package/bin/smallcode.js :2403
response = await fetch(`${baseUrl}/chat/completions`, { - net package/src/api/index.js :219
const response = await fetch(`${this.config.baseUrl}/chat/completions`, { - net package/src/compiled/features/prompts.js :4
// Self-contained: uses process.env config + direct fetch (same pattern as bin/model_client.js). - net package/src/compiled/flows.js :53
const response = await fetch(`${process.env.SERVICE_BASE_URL || "http://localhost:3000"}/validate-file`, { - net package/src/compiled/providers/openai_compat.js :59
const res = await fetch(`${this.endpoint}/chat/completions`, { - net package/src/model/chain.js :96
// Use native fetch (Node 18+) or fall back to node-fetch v2 (CommonJS). - net package/src/model/reviewer.js :85
const fetcher = globalThis.fetch || (() => { try { return require('node-fetch'); } catch { return null; } })(); - net package/src/tools/builtin/web_browse.js :111
const response = await fetch(url, {
secrets 7
- secrets package/bin/commands.js :37
const apiKey = process.env.SMALLCODE_API_KEY || process.env.OPENAI_API_KEY || - secrets package/bin/config.js :389
apiKey = process.env.DEEPSEEK_API_KEY || process.env.OPENAI_API_KEY || modelConfig.apiKey; - secrets package/src/api/index.js :31
apiKey: config.apiKey || process.env.OPENAI_API_KEY || null, - secrets package/src/compiled/features/prompts.js :23
const apiKey = process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY || - secrets package/src/compiled/providers/openai_compat.js :18
this.apiKey = apiKey || process.env.OPENAI_COMPAT_API_KEY || ""; - secrets package/src/model/chain.js :75
const apiKey = process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY || config?.model?.apiKey; - secrets package/src/model/reviewer.js :59
const apiKey = process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY || mainConfig?.model?.apiKey;
tool registrations 45
- policy package/bin/smallcode.js :537
- image package/bin/smallcode.js :626
- router package/bin/smallcode.js :741
- router package/bin/smallcode.js :748
- router package/bin/smallcode.js :752
- context package/bin/smallcode.js :772
- router package/bin/smallcode.js :810
- chain package/bin/smallcode.js :894
- tool_call package/bin/smallcode.js :998
- reasoning package/bin/smallcode.js :1014
- thinking package/bin/smallcode.js :1038
- thinking package/bin/smallcode.js :1046
- thinking package/bin/smallcode.js :1057
- quality package/bin/smallcode.js :1077
- plan package/bin/smallcode.js :1119
- warning package/bin/smallcode.js :1142
- plan package/bin/smallcode.js :1150
- repair package/bin/smallcode.js :1175
- repair package/bin/smallcode.js :1200
- read_guard package/bin/smallcode.js :1298
- critique package/bin/smallcode.js :1320
- warning package/bin/smallcode.js :1617
- warning package/bin/smallcode.js :1649
- escalation package/bin/smallcode.js :1687
- contract package/bin/smallcode.js :1707
- reviewer package/bin/smallcode.js :1727
- plan package/bin/smallcode.js :1741
- warning package/bin/smallcode.js :1760
- plan package/bin/smallcode.js :1766
- git package/bin/smallcode.js :1832
- lsp package/bin/smallcode.js :1899
- adaptive package/bin/smallcode.js :2237
- error package/bin/smallcode.js :2396
- timeout package/bin/smallcode.js :2416
- error package/bin/smallcode.js :2426
- error package/bin/smallcode.js :2459
- retry package/bin/smallcode.js :2488
- smallcode_read_file package/bin/smallcode.js :2869
- smallcode_search package/bin/smallcode.js :2870
- smallcode_patch package/bin/smallcode.js :2871
- smallcode_bash package/bin/smallcode.js :2872
- smallcode_memory_load package/bin/smallcode.js :2873
- smallcode_memory_remember package/bin/smallcode.js :2874
- smallcode_agent package/bin/smallcode.js :2875
- mcp-client package/bin/smallcode.js :3054
declared dependencies 13
- bonescript-compiler@0.14.0
- chalk@4.1.2
- cli-highlight@2.1.11
- express@^5.2.1
- marked@15.0.12
- marked-terminal@7.3.0
- @types/node@^25.9.0
- jest@^30.4.2
- ts-node@^10.9.2
- typescript@^6.0.3
- playwright-extra@^4.3.0
- puppeteer-extra-plugin-stealth@^2.11.0
- budget-aware-mcp@0.6.1
clipboard 1
- clipboard shell call package/src/tui/fullscreen.js :923
clipboard = execSync('pbpaste', { encoding: 'utf-8', timeout: 3000 }).trim();