UIntellAgentDocumentation

UIntellAgent documentation

Install the Rust agent, configure providers and graph memory, operate every TUI workspace, run durable coding tasks, control tools, and expose the authenticated gateway.

Browse documentation
1.0.2Rust 1.94+

Overview

A complete agent runtime in one terminal

UIntellAgent is a Rust-native AI agent built on Rig. It combines model providers, a unified Ratatui interface, durable autonomous runs, a permission-gated tool catalog, an integrated editor, and SurrealDB graph memory in one process.

Stable 1.0 release

The public GitHub repository contains the MIT-licensed Rust source. The v1.0.2 stable release provides a checksummed Linux x86-64 archive, rollback installer, and signed build provenance.

Core architecture

LayerImplementationResponsibility
AgentRig + TokioModel turns, tool dispatch, provider orchestration, and hooks.
InterfaceRatatuiChat, Memory, Tools, Editor, and Runs workspaces.
MemorySurrealDB 3Facts, datasets, typed relations, code locations, views, and operation journal.
ExecutionShared permission engineAllow, deny, confirmation, workspace paths, hosts, and sandbox decisions.
GatewayAxumAuthenticated health, readiness, and chat HTTP endpoints.

Requirements

  • Rust 1.94 or newer and Cargo when building from source.
  • Linux on x86-64. Bubblewrap is required for the default code sandbox.
  • A DeepSeek API key or a running Ollama instance.
  • The surreal binary for automatic local graph-memory startup.
  • rust-analyzer for Rust completion, diagnostics, and definition navigation.

Installation

Install and start

Install the stable Linux x86-64 release with one command, configure a provider, and start the unified TUI.

One-command install
curl --proto '=https' --tlsv1.2 -fsSL https://uintell.org/install.sh | sh

The bootstrap is pinned to the v1.0.2 release checksum and installs without sudo into ~/.local/bin. Read the installer before running it when your shell policy does not allow piped scripts.

Manual verified release

Verified release
version=1.0.2
asset="uintell-agent-${version}-x86_64-unknown-linux-gnu"
base_url="https://github.com/uintell/uintellagent/releases/download/v${version}"

curl --fail --location --remote-name "${base_url}/${asset}.tar.gz"
curl --fail --location --remote-name "${base_url}/SHA256SUMS"
sha256sum --ignore-missing --check SHA256SUMS
tar -xzf "${asset}.tar.gz"
cd "$asset"
./install.sh
export PATH="$HOME/.local/bin:$PATH"
export DEEPSEEK_API_KEY="sk-..."
uintell-agent doctor
uintell-agent --tui

Fish shell and private prompt history

The v1.0.2 installer includes native Fish completions and the ua launcher under ~/.config/fish. In the TUI, Up/Down recalls project-scoped prompts and Tab or Right accepts the visible suggestion. Inputs resembling credentials, private keys, recovery phrases, or Nostr secret keys are not persisted.

Fish and prompt history
ua
ua explain this Rust borrow error
uintell-agent history list --limit 50
uintell-agent history clear

The default provider reads DEEPSEEK_API_KEY. At startup, the unified TUI checks provider health, starts local SurrealDB when required, initializes its schema, and restores workspace state from ~/.uintell/workspace.json.

Build from source

Use Rust 1.94 or newer to build the same version from the public repository.

Source build
git clone https://github.com/uintell/uintellagent.git
cd uintellagent
git checkout v1.0.2
export DEEPSEEK_API_KEY="sk-..."
cargo run -- doctor
cargo run -- --tui

Use Ollama

Start Ollama first, then select it with the global --ollama flag.

Local model
ollama serve
~/.local/bin/uintell-agent --ollama --tui

Override the default Ollama model with --model <name>. The same tools, graph memory, editor, and run engine remain available with either provider.

Optimized source build

Cargo release profile
cargo build --release --locked
./target/release/uintell-agent --tui

Environment doctor

Verify the runtime before starting work

doctor checks the dependencies that UIntellAgent actually advertises and uses.

Diagnostic
cargo run -- doctor
CheckWhat is verified
Provider authConfigured provider can authenticate and respond.
Graph memorySurrealDB readiness and schema initialization.
PermissionsConfiguration parsing and workspace write behavior.
Code policySandbox configuration and Bubblewrap availability.
RuntimesAdvertised Bash, Python, Rust, and Node.js execution paths.
Code intelligencerust-analyzer availability.
Resolve failures before autonomous runs

Offline providers leave Memory, Tools, Editor, and run history available, but Chat and new Runs remain blocked with an actionable reason.

Configuration

Environment variables and persisted state

VariablePurpose and default
DEEPSEEK_API_KEYRequired by the default DeepSeek provider.
OPENROUTER_API_KEYOptional credential for OpenRouter calls through provider_mesh.
UINTELL_API_KEYDedicated secret that authenticates /ready and /chat. It never falls back to a provider key.
UINTELL_DB_URLSurrealDB HTTP URL. Default: http://127.0.0.1:8000.
UINTELL_DB_USERSurrealDB username. Default: root.
UINTELL_DB_PASSSurrealDB password. Default: root.
UINTELL_DB_PATHLocal SurrealKV directory. Default: ~/.uintell/surrealdb.
UINTELL_DB_AUTOSTARTSet to 0, false, no, or off when another service owns local SurrealDB.
UINTELL_CODE_SANDBOXCode execution is sandboxed unless this is explicitly set to 0.
UINTELL_ALLOW_UNSANDBOXED_CODEMust be 1 before unsandboxed code can run. Development override only.
UINTELL_LSP_COMMANDLanguage-server command. Default: rust-analyzer.
UINTELL_LSP_ARGSWhitespace-separated arguments passed to the configured language server.
UINTELL_CORS_ORIGINSComma-separated gateway origins. Defaults to local port 3000 origins.
UINTELL_CORS_ALLOW_ANYSet to 1 only when the gateway should allow any CORS origin.

Local state

PathContents
~/.uintell/workspace.jsonActive workspace, editor cursor/file, selected run, and graph viewport.
~/.uintell/runs/Private atomic run checkpoints and result ledgers.
~/.uintell/surrealdb/Default local SurrealKV data directory.
~/.uintell/surrealdb.logOutput from automatically started SurrealDB.
~/.uintell/permissions.tomlTool, file, command, and network policy.
~/.uintell/skills/Versioned manifests and Markdown instructions for explicitly selected skills.

Unified TUI

Five persistent workspaces

Start the interface with cargo run -- --tui. Switch workspaces globally without destroying their state.

Alt+1Chat
Alt+2Memory
Alt+3Tools
Alt+4Editor
Alt+5Runs
Ctrl+GCancel active model, tool, or graph job

The active workspace, open editor location, selected run, and graph view are restored the next time the TUI starts.

Chat workspace

Stream, intervene, and start durable work

Chat streams model output and tool events in one timeline. Use Alt+Enter to send andEsc or Ctrl+G to cancel an active model/tool run.

CommandBehavior
/task <objective>Create a durable coding run using the current workspace and staged context.
/task --remember <objective>Also permit the run to create or mutate graph memory.
/runsOpen durable run history.
/healthShow current provider health.
/clearClear the visible conversation.
/save, /load, /sessionsManage chat sessions.
/exitExit when no unresolved review blocks shutdown.

Graph memory

Build durable knowledge from nodes and directed relations

A node is one persistent, self-contained fact stored in SurrealDB. Nodes survive agent restarts and can be searched, edited, grouped into datasets, connected to other facts, or loaded into a future model turn. Open Memory with Alt+2. Inside Memory, plain keys 1 through 4 switch Graph, Explorer, Query, and Analytics.

Use the standalone console without a model

Run uintell-agent db to inspect and manage the same SurrealDB graph without loading an AI provider.

What a knowledge node stores

FieldPurposeExample
TypeClassifies one atomic fact. Common types are memory, preference, finding, user_detail, decision, error, and fix.decision
ContentThe required fact text. Keep it specific and understandable without relying on another node.Use a provider registry in v1.1.
DatasetGroups knowledge by project or domain. Names use letters, digits, dots, underscores, or hyphens.uintellagent
TagsOptional comma-separated labels for filtering and search.providers,v1.1
ConfidenceA value from 0 to 1. Higher-confidence facts are returned before lower-confidence facts during context recall.1.0

Create your first node

  1. Press Alt+2 to open Memory, then press plain 2 for Explorer.
  2. Press c to open the Create Knowledge Unit form.
  3. Use Tab and Shift+Tab to move between fields. Content cannot be empty.
  4. Press Enter to validate and save. Read the bottom status line if the form remains open.
Example knowledge unit
Type:       decision
Content:    UIntellAgent v1.1 will use a provider registry.
Dataset:    uintellagent
Tags:       providers,v1.1
Confidence: 1.0

Connect two nodes

Relations are directed: the node selected first is the source and the node selected second is the target. Use Explorer for the clearest selection workflow.

  1. Press plain 2 for Explorer and select the source node with j/k.
  2. Optionally press t to choose relates_to or proves.
  3. Press lowercase l once. The status line reports link source ...; select target and press l.
  4. Select a different target node with j/k.
  5. Press lowercase l again to persist source --relation--> target.
  6. Press plain 1 for Graph. Use a for layout or Z to fit all visible nodes.

Esc cancels a pending link. Selecting the same node as source and target also cancels it. If a dataset or type filter hides one endpoint, switch the filter before linking.

Choose the correct relation

RelationMeaningDirection
relates_toA general association. Use it when two facts are connected but neither is evidence for the other.topic --relates_to--> associated fact
provesThe source contains concrete evidence supporting the target. Do not use it for a guess, loose similarity, or simple chronology.evidence --proves--> conclusion
Relation direction examples
[finding] All provider-registry tests passed
    --proves-->
[decision] The provider registry is ready to ship

[error] A node with empty content cannot be saved
    --relates_to-->
[fix] Add required content before pressing Enter

Inspect, arrange, and remove connections

j / kSelect visible node
DragMove and persist a node
Shift+DragLasso-add nodes
+ / - / 0Zoom in, out, or reset
aTopology-aware auto-layout
z / ZFit selected or all visible nodes
pPin or unpin selected node
SpaceMark for bulk operations
c / e / dCreate, edit, or confirm deletion
tToggle relation type
l twiceSelect source, then target
[ / ]Select a connected edge
uConfirm selected edge removal
U / RUndo or redo destructive actions

Let the agent store and recall knowledge

In Chat, ask the agent to remember a durable fact or recall a previous decision. The same operations are available explicitly in Tools through graph_store, graph_query,graph_context, graph_edit, and graph_forget.

Memory tool calls
:run graph_store {"fact_type":"decision","content":"Use a provider registry in v1.1","dataset":"uintellagent","tags":["providers","v1.1"],"confidence":1.0}
:run graph_query {"query":"provider registry","limit":10}
:run graph_context {"fact_types":["decision"],"limit":20}
  • graph_store creates a fact; graph_query searches fact content and returns record IDs.
  • graph_context loads high-confidence, recent facts into model context.
  • graph_edit updates a record ID returned by a query.
  • graph_forget permanently deletes a fact and is not the same as the TUI's undoable workflow.
Store knowledge, never secrets

Do not place passwords, API keys, recovery phrases, private keys, access tokens, or other credentials in graph memory.

Current relation-aware retrieval boundary

Relations are persisted, visualized, and available to SurrealQL. In v1.0, graph_contextranks nodes by confidence and recency; it does not automatically traverse relates_to orproves edges. Moving or pinning a node changes only its visual layout, not recall priority.

SurrealQL and graph commands

Graph console
:query SELECT * FROM fact LIMIT 20;
:dataset code
:layout
:fit-all
:view-save code-review
:export ~/.uintell/graph-snapshot.json
:repair

:query accepts read-only SurrealQL. Mutations require :query!, then an additional preview and confirmation. Imports are validated before :import! can merge new records.

Scale and recovery

  • :load-more [count] and :load-all raise the interactive window up to 100,000 nodes.
  • :view-save, :view, and :views persist filters, pan, and zoom.
  • :export writes a versioned JSON snapshot; :repair fixes metadata and duplicate edges.
  • Refresh, layout, and query operations run as cancellable background jobs with retry support.

Tools workspace

Inspect and execute the registered catalog

Select tools with j/k. Enter prepares a call. Use :run for a normal policy check and :run! only to explicitly confirm a call that requested confirmation.

Tool calls
:run file_read {"path":"Cargo.toml","limit":40}
:run! code_exec {"language":"python","code":"print(2 + 2)"}
terminal

Run commands in a persistent project shell.

file_read

Read a text file with line numbers and bounded output.

file_write

Create or replace a workspace file and retain before/after bytes for review.

file_search

Search project files through ripgrep.

browser

Fetch a web page as text or HTML.

web_search

Search the web through DuckDuckGo.

code_exec

Execute Python, Bash, Rust, or Node.js in Bubblewrap by default.

graph_store

Store a persistent fact in SurrealDB.

graph_query

Search graph-memory facts.

graph_context

Load recent high-confidence memory context.

graph_edit

Edit a fact by validated record ID.

graph_forget

Permanently delete a fact by validated record ID.

provider_mesh

Race selected configured providers and return the first valid response.

:run! is not a bypass

Denied commands and paths remain denied. The suffix records explicit confirmation only for operations classified as confirmable.

Editor workspace

Edit real files with code intelligence and review gates

The Vim-style editor combines a project tree, text buffer, diagnostics, completions, definitions, agent change review, and a run inspector. Agent file_write calls never silently replace an unsaved buffer.

Ctrl+POpen command palette
Ctrl+SpaceRequest completion
Ctrl+]Go to definition
Alt+CStage selection or file in Chat
Alt+RStage a run with code context
Alt+MPin code location to Memory
[ / ]Previous or next review hunk
a / rAccept or reject current hunk

Editor commands

CommandBehavior
:e <path>Open a file or browse a directory. :e . loads the current project tree.
:w, :wqWrite the current file, optionally returning to Chat.
:chatStage the current selection or file as chat context.
:runStage the current context as a durable objective.
:memoryCreate a navigable code-location fact and relate it to selected memory.
:definitionOpen the language-server definition target.
:accept, :rejectPersist a decision for the current hunk.
:accept-all, :reject-allResolve every remaining hunk.
:undo-changeUndo the most recently accepted agent change when disk state still matches.
:discardRevert the unsaved editor buffer.

Durable runs

Checkpoint autonomous coding work

A run inspects and plans, implements against real files, verifies, performs an independent review, repairs failed quality gates within bounds, and writes a final engineering report.

Task CLI
~/.local/bin/uintell-agent task start "implement the requested change and verify it"
~/.local/bin/uintell-agent task start --remember "implement and remember the decision"
~/.local/bin/uintell-agent task list
~/.local/bin/uintell-agent task show <run-id>
~/.local/bin/uintell-agent task resume <run-id>
  • Start in Chat with /task <objective> or in Runs with :new <objective>.
  • Use --remember only when the run may persist or mutate graph knowledge.
  • c or Ctrl+G cancels at a checkpoint; r resumes eligible runs.
  • Completed tool calls are recorded in a result ledger and are not replayed after interruption.
  • Only one process can drive a run at a time.

CLI reference

Commands and global flags

CommandPurpose
serveStart the authenticated HTTP gateway.
initInitialize graph-memory schema.
skillsList installed versioned instruction skills.
skill-newCreate a private skill manifest and editable SKILL.md.
dbOpen the standalone graph operations console.
capabilitiesPrint the active, partial, and planned Rig capability map.
doctorVerify provider, graph, permissions, sandbox, and runtimes.
historyList or clear private, project-scoped prompt history.
taskStart, list, inspect, or resume durable coding runs.
stepRun a visible Rig AgentRun state machine.
routeRoute a task into an agent mode.
chainRun a prompt chain over a task.
orchestrateRun planner, coder, reviewer, and tester orchestration.
evaluateRun an evaluator/optimizer workflow.

Global flags

FlagBehavior
-p, --promptRun a single prompt without opening the TUI.
--tuiOpen the unified terminal interface.
--ollamaUse local Ollama instead of DeepSeek.
--modelSelect the Ollama model.
--visibleShow every model turn, tool call, and result for a prompt.
--max-turnsBound visible stepping. Default: 12.
Help
cargo run -- --help
cargo run -- task --help
cargo run -- serve --help

HTTP gateway

Run UIntellAgent as an authenticated local service

Start gateway
export DEEPSEEK_API_KEY="sk-..."
export UINTELL_API_KEY="replace-with-a-separate-secret"
~/.local/bin/uintell-agent serve --addr 127.0.0.1:3000
EndpointAuthenticationPurpose
GET /healthNoneStatus, version, and process uptime.
GET /readyRequiredProvider readiness and degradation state.
POST /chatRequiredSend a message with optional in-memory session_id history.
POST /chat
curl http://127.0.0.1:3000/chat \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: replace-with-a-separate-secret' \
  -H 'X-Request-Id: example-001' \
  -d '{"message":"Inspect this task","session_id":"docs-demo"}'

Gateway limits

  • Authenticate with X-API-Key or Authorization: Bearer.
  • 60 requests per minute per API key.
  • 120-second model timeout.
  • 32,000 characters per message and 128 characters per session ID.
  • X-Request-Id is accepted or generated automatically.

Permissions

Put policy between model intent and side effects

The file ~/.uintell/permissions.toml is created with workspace-safe defaults when absent.

ModeBehavior
read-onlyNo file writes, shell access, network writes, or database writes.
workspaceWrites stay inside configured directories; shell calls require both an allow-list match and argument-level policy approval.
full-accessAllows actions not explicitly denied; destructive operations can still require confirmation.
~/.uintell/permissions.toml
config_version = 1
mode = "workspace"
workspace_dirs = ["."]
allowed_commands = ["ls", "cat", "head", "tail", "rg", "git", "cargo", "code_exec", "npm", "pnpm"]
denied_commands = ["rm -rf /", "dd if=", "mkfs", "shutdown", "reboot", "halt", "poweroff"]
allowed_read_paths = ["/tmp"]
denied_read_paths = ["/etc/shadow", ".ssh", ".aws", ".gnupg", ".kube", ".docker", ".env*", ".netrc", "*.pem", "*.key"]
allowed_write_paths = ["/tmp"]
denied_write_paths = ["/etc", "/boot", "/sys", "/proc", "/dev"]
allowed_hosts = ["api.deepseek.com", "127.0.0.1", "localhost", "duckduckgo.com", "crates.io", "github.com", "raw.githubusercontent.com", "openrouter.ai"]
denied_hosts = []
confirm_destructive = true

Deny rules are evaluated before allow rules. Shell expansion, redirection, interpreters, repository code, and filesystem inspection require confirmation even when a command name appears in the allow list.

Skills

Create and select instruction skills

Skill commands
uintell-agent skill-new release-notes "Generate verified release notes"
$EDITOR "$HOME/.uintell/skills/release-notes/SKILL.md"
uintell-agent --skill release-notes --tui
uintell-agent skills

Each skill stores a format-versioned skill.toml and bounded Markdown instructions. Select up to eight skills explicitly with repeated --skill <name> flags; selected instructions are composed into the agent preamble before execution.

Instruction skills are data, not executable plugins

Skill directories and files use private modes, symlink escapes are rejected, and both manifests and instructions are read with byte limits.

Troubleshooting

Diagnose common failures

Provider returns 401 Unauthorized

Replace DEEPSEEK_API_KEY, restart UIntellAgent, and run cargo run -- doctor. Use --ollama when no cloud key should be required.

Graph context reports an error

With the default local URL, the agent starts SurrealDB automatically. Confirm the surreal binary is installed, inspect ~/.uintell/surrealdb.log, and verify UINTELL_DB_URL. SetUINTELL_DB_AUTOSTART=0 only when another service manager owns the database.

Tool confirmation dialog appears

The call did not match an unconditional allow rule or was classified as destructive. Review the exact tool and arguments. Approve through the TUI or repeat a prepared Tools call with :run!. Denied calls cannot be confirmed.

code_exec cannot find a temporary source file

Run the doctor and verify that the language runtime, temporary directory, and Bubblewrap are available and writable.

Editor completion is unavailable

Install rust-analyzer or set UINTELL_LSP_COMMAND and UINTELL_LSP_ARGS for a custom server. The default Rust server intentionally ignores unsupported file types such as TOML.

A run is paused after a crash

Open Runs and resume it, or use cargo run -- task resume <run-id>. Completed ledger entries are not replayed.

First response
cargo run -- doctor
cargo run -- task list
cargo run -- task show <run-id>