Skip to content

Security ​

lakreet-swarm is designed with security as a default, not an afterthought.

No shell execution ​

  • All CLI arguments passed as arrays to spawn/execFile
  • No shell: true, no string interpolation
  • ESLint rule no-shell-string enforced in CI
  • Command injection impossible via flags or data
javascript
// Safe: array args
execFile(cliPath, ['render', '--template', tpl, '--values', vals], ...)

// Unsafe (never used):
execFile('sh', ['-c', `render --template ${tpl}`], ...)

Trust model ​

ComponentTrust levelReason
Template (.ectemplate)TrustedContains full EffectCraft project; only run templates you trust
Data file (CSV/JSON)Untrusted inputValidated, coerced, sanitized before use
Media filesUntrusted inputPaths validated against --media-dir base
EffectCraft CLITrustedLocal binary, same trust as any installed app

Data validation as security ​

  • Every row validated before render
  • Type coercion with strict rules (no silent corruption)
  • Media paths resolved against mediaDir base (no path traversal)
  • Output names sanitized (Windows reserved names, invalid chars)

CSV generator privacy ​

The in-browser CSV generator:

  • Runs entirely in browser (no server)
  • No localStorage, sessionStorage, IndexedDB
  • No analytics, no tracking, no external requests
  • Only network request: optional fetch of example template from same origin
  • File processing: client-side ZIP read (fflate), no upload

EffectCraft trust boundary ​

User -> lakreet-swarm (validates) -> effectcraft-cli (trusted local binary) -> OS

lakreet-swarm never:

  • Executes shell commands
  • Evaluates code from data
  • Accesses files outside declared paths
  • Sends data to network

Next steps ​

Independent project. Not affiliated with the ArtCraft team or the EffectCraft project.