Skip to content

Releases: Atennebris/Umbra-Agent

v0.1.5

11 Jun 07:53

Choose a tag to compare

[0.1.5] - 2026-06-11

Fixed

  • umbra --version now reads the version from package.json instead of a hardcoded string that was stuck on 0.1.0

v0.1.4

10 Jun 01:07

Choose a tag to compare

[0.1.4] - 2026-06-10

Fixed

  • ecosystem.config.cjs and config.json added to package files — fixes PM2 daemon startup after global install

v0.1.3

10 Jun 00:55

Choose a tag to compare

v0.1.3 Pre-release
Pre-release

[0.1.3] - 2026-06-10

Fixed

  • Removed src/ from package files — fixes spawn tsx ENOENT error on global install

v0.1.2

10 Jun 00:46

Choose a tag to compare

v0.1.2 Pre-release
Pre-release

[0.1.2] - 2026-06-10

Fixed

  • scripts/ directory added to package files — fixes postinstall error on global install

v0.1.1

09 Jun 22:40

Choose a tag to compare

v0.1.1 Pre-release
Pre-release

[0.1.1] - 2026-06-10

Fixed

  • README images now use absolute URLs for correct display on npmjs.com

v0.1.0

09 Jun 21:58

Choose a tag to compare

v0.1.0 Pre-release
Pre-release

[0.1.0] - 2026-06-07

Core Architecture

  • Daemon-first architecture via PM2 — hidden local HTTP server on 127.0.0.1:8080, CLI as thin HTTP client
  • Lazy-loading runtime modules — heavy branches load only on demand per command

CLI & TUI

  • Core commands: umbra start, umbra stop, umbra status, umbra task add
  • umbra init — scaffolds AGENTS.md template and check.sh / check.ps1 in project directory
  • Terminal UI built with Ink — original Umbra dark/shadow theme
  • Markdown rendering with syntax highlighting and streaming model responses
  • /clear — resets transcript and starts a new thread/session on the backend
  • Drag-and-drop file path parsing and local image to Base64 conversion (Vision support)
  • umbra doctor — health check for filesystem, ports, SQLite, daemon, and web providers
  • umbra debug — live monitor for daemon/CLI/TUI/provider events; writes ~/.umbra/debug/events.jsonl
  • umbra permission — view rules, reset "always allow", switch permission modes
  • umbra trust list / umbra trust remove <path> — manage trusted workspace paths
  • umbra usage — token and cost report from usage log

Memory & Sessions

  • Service filesystem auto-init: ~/.umbra/, ~/.umbra/sessions/, ~/.umbra/projects/
  • Global SQLite database with vector search via sqlite-vec
  • Local text embeddings via Transformers.js (all-MiniLM-L6-v2, ~90 MB, auto-downloaded)
  • Typed JSONL session events with stable schema: id, sessionId, projectPath, timestamp, type, payload
  • AGENTS.md rules parsing and MEMORY.md read/write per project
  • Full thread lifecycle: thread_start, thread_list, thread_resume, thread_fork, thread_archive, thread_unarchive
  • TUI session picker with /sessions, /resume, /sessions fork
  • /clear bound to new thread — previous thread preserved in history
  • Explicit memory controls: use_memories / generate_memories flags per runtime/project/thread
  • Memory provenance and citations — source metadata visible in responses and debug trace
  • Safe memory reset without deleting session logs
  • Session compaction pipeline with iterative accumulative summary (Previous Summary + New Messages = Updated Summary)
  • Session import/export support

Context Engine

  • Tree-sitter AST integration — full AST for 15+ languages via WASM grammars
  • GML/GameMaker 2.3+ full AST via @bscotch/gml-parser (function, constructor, macro, enum, globalvar)
  • Repo Map generator — compact symbol-level outline of the entire project
  • Code compression — sends only function/class signatures, not full file bodies
  • Auto token counting for outgoing prompts
  • /compact — forces summarization of accumulated context
  • /compact settings — configure dedicated provider/model for compaction
  • Universal text fallback for unknown file types — bounded context packet with top symbols and token estimate
  • Split-turn compression — mid-turn context overflow handled by compressing the prefix, keeping the last 3 raw tool pairs
  • Retrieval-first context packets — search results compressed to ranked file groups with file:line references preserved; token caps per mode

Language coverage — full AST

JavaScript, TypeScript, TSX, Python, Go, Shell/Bash, Rust, Java, C/C++, C# (class/interface/record/property/constructor/event), PHP, Ruby, CSS, PowerShell, INI/Config, GML/GameMaker 2.3+

Language coverage — structured parsers

JSON, YAML, GitHub Actions YAML, Markdown, SQL, HTML, TOML, GraphQL, Protocol Buffers, Terraform/HCL, Prisma, Solidity, Zig, Dart, Kotlin, Swift, Lua, Scala, Elixir, Erlang, Haskell, Perl, R, Clojure, Vue, Svelte, Astro, XML, Gradle, GDScript, MATLAB/Octave, Nix, WebAssembly Text, Assembly x86/ARM, Dockerfile, Makefile, CMake, .env (values redacted), log files, Jupyter Notebook, PDF, DOCX, yarn.lock, Cargo.lock, Gemfile.lock, composer.lock

Provider Layer

  • Dynamic model registry with live capabilities fetch via models.dev + HuggingFace (tool/vision/context/reasoning flags — no hardcoding)
  • OpenAI client with structured output (Zod), Anthropic client, local network client (Ollama, LM Studio)
  • ProviderTypeSpec registry with value, label, default_url, needs_key, cloud, aliases
  • Provider profiles with full CRUD: list, create, update, delete, test, capabilities
  • Per-profile model selection and global fallback
  • Enable/disable profiles without deletion — explicit connected / available / unavailable status
  • Graceful degradation for broken profiles — auto-fallback to valid connection on startup
  • Optional/module-gated providers — module absent means provider unavailable, no crash
  • CLI/TUI provider management and active model switching

Tools

  • Zod schemas for strict JSON validation of all AI tool calls
  • Tool Runner — central call router with risk classification (read_only / write / execute)
  • Tool presets: chat-readonly, agent-default, exec-full
  • Machine-readable result schema on every tool
  • fs.list, fs.read, fs.write, fs.edit (Unified Diff patch application)
  • shell.exec — terminal command execution with stdout/stderr capture
  • search.rg — ripgrep wrapper with grouped output (file buckets, snippets, match counts, truncation metadata)
  • search.files — ignore-aware file listing with Node.js fallback
  • search.fuzzy — fuzzy file path scoring
  • External binary health layer — availability check, version, path source, custom path override
  • git.status, git.diff, git.apply, git.commit, git.push, git.pull
  • fs.cd — switches active projectPath with auto-reload of AGENTS.md, Repo Map, and MEMORY.md
  • Central permission hook before every tool call
  • Destructive vs non-destructive tool separation at contract level

Orchestration & Autonomous Loop

  • Planning Mode — AI reads AST and produces a JSON plan without executing any tools
  • Agent Mode — interactive working mode with tools resolved by policy and task intent
  • --exec autonomous mode — patch loop via fs.edit with auto-run of check.sh / check.ps1
  • Per-mode execution contracts: allowed tools, confirmation rules, edit/shell/git permissions, stop-guards; no mode bleed
  • On Exit Code 1 → capture stderr, build new prompt with error, auto-retry (up to 6 attempts)
  • On Exit Code 0 → task complete: auto-commit and write to project MEMORY.md
  • --exec has a separate policy profile — edits/run/check/fix allowed automatically within sandbox
  • Time-boxing — interrupt a hung task by timer (--time flag)
  • Task lifecycle: create, status, output, stop, restart for background tasks

Security, MCP & Plugins

  • Interactive CLI permission prompts — Allow / Deny / Always Allow before dangerous actions
  • Permission subsystem with rules, decision logging, and mode-aware behavior (PermissionManager)
  • MCP client for external tools (stdio transport, JSON-RPC) with tool/resource discovery and auth flow
  • Dynamic plugin loading from plugins/ directory with lifecycle management

Gateway, Routing & Token Economy

  • Single outgoing LLM call point in daemon — shared adapter with retries, limits, and logging
  • Format translation layer: internal Umbra contract ↔ provider payload
  • Named routing chains with tiered fallback — auto-switch on 429s, network drops, empty responses
  • Parallel request deduplication
  • Pre-LLM compression layer with configurable intensity: off / lite / standard / aggressive
  • Terminal/tool output compression: shell.exec, search.rg, git diff, harness stderr
  • Stacked pipeline: machine-block compression first, then prose condensation
  • Mode-linked compression: plan minimal, agent balanced, exec aggressive on tool output
  • Structured usage log in ~/.umbra/usage.jsonl
  • Per-request normalized token counter: input, output, reasoning, cacheRead, cacheWrite, costUsd, source: actual|estimated
  • OpenAI-compatible and Anthropic response normalization (including reasoning and cache fields)
  • Cost estimate and savings displayed in TUI; usage comparison by session/model/provider
  • umbra permission — strict / on-demand / yolo modes, visible in TUI and doctor
  • Tool presets aligned with displayed policy names
  • Deduplicated and normalized model list — unified capability card from registry API
  • Plan mode structured JSON output
  • Metrics panel in TUI: token counts, response time, context fill %, cost, compression indicator
  • Visual separation of reasoning blocks vs regular text; toggle for reasoning visualization
  • Double Esc to interrupt an active stream without exiting CLI
  • @-file references with fuzzy scoring and match highlights in input
  • Human-readable tool call rows with action label and detail line for every tool type
  • Full provider connection flow via step-by-step screen
  • Full Markdown element set with streaming (no flicker), GFM tables, syntax highlighting
  • Shared syntax highlight engine with language aliases and guardrails (512 KB / 10,000 lines)
  • Built-in platform constraints — no silent "improvement" steps outside explicit requests
  • Bootstrap profile — one-time context collection about user and project stack
  • Notification channel for daemon tasks: ~/.umbra/notifications.jsonl
  • /full flag — increases context limits and disables compression

Web Search

  • web.search and web.fetch tools — external search isolated from local search.rg
  • /web command — interactive menu for on/off, mode (cached / live), provider, status
  • Providers: DuckDuckGo (default, zero-config), SearXNG (self-hosted), Jina Search, Brave Search, Tavily
  • Auto-migration: paid providers without API key → auto-switch to DuckDuckGo
  • web.fetch 404s return structured failed-result instead of crashing the tool loop
  • web.search gated by agent / exec permission policy
  • Web provider status in umbra doctor

TUI T...

Read more