Latest v0.3.6 · Apache-2.0 · Local-first

A local-first AI knowledge & agent workspace

Hetu puts Markdown notes, chat and coding sessions on one data layer: SQLite + sqlite-vec (or PostgreSQL + pgvector) stores content and vectors, ASP.NET Core 10 serves the API and the agent loop, React 19 renders the UI, and a Tauri 2 shell ships installers and auto-update. Model calls only go to providers you configure.

ASP.NET Core 10 · EF Core 10 React 19 · TypeScript 6 · Vite 8 SQLite + sqlite-vec / PostgreSQL + pgvector MCP (JSON-RPC 2.0)
Agent workspace: session tree on the left, message stream with tool calls and the input toolbelt on the right
Click for full size
What it is

One process, one database, two entry points

The Notes page is for writing and organizing; the Code page (/code) is for asking and doing. Both read and write the same SQLite/PostgreSQL database and share the knowledge base, graph, memories and task system. The desktop build starts the backend as a sidecar, with data in the OS user data directory.

Notes

Milkdown WYSIWYG plus a CodeMirror source view; select text to run AI actions (polish / translate / condense / expand / explain / custom); notebooks, tags, version history, share links, trash, Markdown export.

Agent workspace

Sessions and topics, SSE event stream, tool calls with approvals, five permission modes, reasoning effort, send queue and mid-run steering; distill a topic into a note.

Code sessions

Local or SSH repositories; current branch or an isolated worktree; local and remote branches with one-button Git sync; seven panels: files, changes, checkpoints, Git, PR, browser, terminal.

Retrieval and structure

Notes, files and URLs are chunked and embedded; the knowledge graph extracts entities and relations; Wiki generation turns a repository into docs; memories persist across sessions with Dream consolidation.

Organization and automation

Kanban board (tasks executed by agents with recorded run steps), visual workflows, background and cron-scheduled jobs, inbox notifications.

Extensions and models

Agents (prompt presets with tool allowlists and per-tool approval), skills (built-in, custom, on-disk), built-in tool toggles, MCP servers, multiple providers with per-scenario defaults, a compatibility proxy, usage and cost tracking.

Implementation

Technical choices and boundaries

Everything below is a mechanism that actually runs in the codebase, not a concept slide.

TopicImplementation
StorageSQLite by default (Data Source=hetu.db) with the sqlite-vec extension; switchable to PostgreSQL 16+ with pgvector via DatabaseProvider — same feature set
Paging and aggregationList endpoints are paged and aggregated in the database (SQL COUNT + OFFSET/FETCH, GROUP BY for counts and summaries); knowledge-base status no longer loads whole tables
SQLite time orderingThe provider cannot order or aggregate DateTimeOffset in SQL; the repository ships GetPagedByDateAsync / CountByAsync / PruneAsync that project the sort key, order in memory and fetch the page by primary key
Read cachingPolled read-only status endpoints carry a short [ResponseCache] to avoid duplicate queries
Agent loopSSE event stream (delta / thinking / tool call and result / steering / checkpoints / approvals / notices); queueing and mid-run steering; long work is recorded as TaskItem rows
Code isolationgit worktree per session, defaulting to .hetu-worktrees/<repo>/<worktree> next to the repository, with automatic cleanup by merge status and idle time
PR integrationDetects gh or glab from the origin remote; prints platform-specific install hints when the CLI is missing
DesktopTauri 2 shell with a backend sidecar; fat / slim installer channels; updates via GitHub with three mirror fallbacks; an installer hook kills leftover backend processes before overwriting files
Quality barBackend dotnet build and frontend eslint must be warning-free, and no suppression is accepted (pragma / eslint-disable / SuppressMessage)

Deeper details (layering, request path, data model, performance work) are in Architecture.

Screenshots

Real UI (click for full size)

Every shot below is real local data. If a thumbnail is too small to read, click it.

Start

Two ways to run it

Desktop build (no toolchain)

# Installers: Windows NSIS / MSI, Linux AppImage / deb
# https://github.com/wosledon/Hetu/releases/latest
#
# fat  = bundles the .NET runtime (~100 MB+)
# slim = smaller, requires the .NET 10 runtime

Closing the window minimizes to the tray and the backend keeps running; use the tray menu to quit.

From source

git clone https://github.com/wosledon/Hetu
cd Hetu

pwsh ./scripts/start.ps1     # Windows
./scripts/start.sh           # Linux / macOS

# frontend http://localhost:5174
# API      http://localhost:5000/api
# docs     http://localhost:5000/scalar/v1

Requires .NET SDK 10.0+ and Node.js 20+.