← Open Source
easylink-ai-open

tiri-agent

Tiri local agent backend and web shell built on agent-runtime.

AI EngineeringBring agent to usersBuild agent workflow (SDK)TypeScript
Open on GitHub
Momentum
+0stars in 24 hours0.0%
711
Stars
121
Forks
+-9
This week
0
Contributors
Created 2026-07-02 · Updated 2026-10-13 · #14688 today

easylink-ai-open/tiri-agent is ranked 14,688 with 711 stars.

Same-category comparison

easylink-ai-open/tiri-agent is ranked 14,688 among these 8 peers; SeanJ1ang/design-judge-skills is ranked 14,671.

Same-category comparison
NameRankMetrics
chujiezheng/chat_templates14,650
Language:
Jinja
Stars:
714
Forks:
64
Description:
Chat Templates for 🤗 HuggingFace Large Language Models.
yvann-ba/ComfyUI_Yvann-Nodes14,657
Language:
Python
Stars:
714
Forks:
30
Description:
Audio Reactivity Nodes for ComfyUI 🔊 Create AI generated audio-driven animations.
mckaywrigley/ai-brainstore14,665
Language:
TypeScript
Stars:
713
Forks:
97
Description:
An experiment concept for an AI brain.
SeanJ1ang/design-judge-skills14,671
Language:
Python
Stars:
712
Forks:
102
Description:
Evidence-driven Agent Skills for design award research, evaluation, award matching, entry writing, and submission readiness.
runesleo/claude-code-workflow14,722
Language:
Shell
Stars:
709
Forks:
88
Chaoses-Ib/ComfyScript14,727
Language:
Python
Stars:
708
Forks:
47
Description:
A Python frontend and library for ComfyUI.
Nanako0129/pilotfish14,729
Language:
Python
Stars:
708
Forks:
44
Nomadcxx/opencode-cursor14,730
Language:
TypeScript
Stars:
708
Forks:
94
Description:
Use Cursor Pro models in OpenCode via HTTP proxy with OAuth.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguageTypeScript
CategoryAI Engineering
SubcategoryBring agent to users, Build agent workflow (SDK)
KeywordsAgent sandbox, Agent-ready APIs, Client integration, Prompt engineering
Stars711
Forks121
Contributors0
Created date2026-07-02
Updated date2026-10-13
Stars in 1 day0
Stars in 7 days-9
Rank14,688
Previous rank14,535
Rank change-153
7-day stars rank18,928
Previous 7-day stars rank18,832
7-day stars rank change-96
Total stars rank14,710
Previous total stars rank14,683
Total stars rank change-27
README summary

Tiri Agent Tiri is a local-first agent product shell built on the standalone core. It packages the runtime into a practical personal-agent experience: CLI chat, FastAPI APIs, a Next. js web shell, sandbox tools, channel integrations, local skills, and SQLite persistence. Highlights Local-first backend with durable SQLite sessions, settings, channel state, event streams, and outbox records. Runtime composition around , keeping product policy here and neutral agent mechanics in the sibling core package. CLI and web entry points

through the same configuration path. Local and Docker-backed sandbox tools for file access and shell execution. Prompt assembly from base identity, runtime environment, optional profile context, and local skill registry. Channel adapters for Telegram, Weixin/WeChat, and Feishu/Lark, including inbound listeners and proactive outbound messaging. | | | Base prompt, profile prompt, environment prompt, and skill index assembly. | | | Tool registry composition and concrete Tiri tool sets. | | | Local and Docker sandbox implementations exposed as runtime tools. | | | Provider adapters, listeners, gateway, targets, settings

, and outbox worker. | | | FastAPI app, SQLite storage, event queues, and local server runner. js web shell for Tiri-specific backend integration. | Top-level , , and are compatibility re-export modules. New implementation should live under the structured packages above. Quick Start Install the sibling runtime and this product repo into a local virtual environment: Configure a model: Run CLI chat: Start the local API and web shell: The server command starts: FastAPI at Next. | | | Optional file overriding the base system prompt

. | | | Optional local user/profile prompt file. | | | Local data directory, defaulting to when configured. | | | Collaboration mode, currently or . | CLI flags mirror the most common settings: Prompts And Skills Tiri builds the system prompt from: for the base identity, operating loop, tool rules, workspace rules, safety guidance, and voice. The runtime environment, such as , , or . If is unset, it defaults to when is configured, otherwise . Sandbox Tools Enable local workspace tools: Use Docker-backed shell execution while keeping the same mounted workspace

: The Docker backend keeps one container per Tiri session. The container name is derived from the session id, mounted workspace, and image, so resumed sessions reuse their sandbox container and later calls execute through . Sandbox tools currently include , , , and . Local Data And Channels Tiri stores local backend data in SQLite. By default, the durable database is: The database stores chat sessions, message history, event-stream records, local settings, channel settings, proactive targets, and channel outbox entries. Supported local channel providers

: Telegram long polling via the Bot API. Inbound channel events are routed through: When exposed beyond localhost, set an inbound token and send it as or : Background channel services are enabled by default and can be disabled with: Development Run Python tests: Run frontend checks: License Tiri Agent is licensed under the GNU Affero General Public License, version 3 only.

Frequently asked questions

How many stars and forks are recorded?

easylink-ai-open/tiri-agent has 711 stars and 121 forks.

What is the repository rank?

easylink-ai-open/tiri-agent is ranked 14,688.

What language and category are recorded?

easylink-ai-open/tiri-agent has 711 stars, uses TypeScript and belongs to AI Engineering.

Which repository is closest in rank?

easylink-ai-open/tiri-agent is compared with SeanJ1ang/design-judge-skills, ranked 14,671 with 712 stars.

README

Tiri Agent

Tiri is a local-first agent product shell built on the standalone agent-runtime core. It packages the runtime into a practical personal-agent experience: CLI chat, FastAPI APIs, a Next.js web shell, sandbox tools, channel integrations, local skills, and SQLite persistence.

Highlights

  • Local-first backend with durable SQLite sessions, settings, channel state, event streams, and outbox records.
  • Runtime composition around agent-runtime, keeping product policy here and neutral agent mechanics in the sibling core package.
  • CLI and web entry points through the same TiriBackend configuration path.
  • Local and Docker-backed sandbox tools for file access and shell execution.
  • Prompt assembly from base identity, runtime environment, optional profile context, and local skill registry.
  • Channel adapters for Telegram, Weixin/WeChat, and Feishu/Lark, including inbound listeners and proactive outbound messaging.

Repository Map

Path Purpose
agent/ TiriBackend, backend config, logging hooks, and collaboration modes.
prompts/ Base prompt, profile prompt, environment prompt, and skill index assembly.
tools/ Tool registry composition and concrete Tiri tool sets.
sandbox/ Local and Docker sandbox implementations exposed as runtime tools.
channels/ Provider adapters, listeners, gateway, targets, settings, and outbox worker.
server/ FastAPI app, SQLite storage, event queues, and local server runner.
cli/ Thin tiri command entrypoint.
web/ Next.js web shell for Tiri-specific backend integration.

Top-level backend.py, config.py, and collaboration.py are compatibility re-export modules. New implementation should live under the structured packages above.

Quick Start

Install the sibling runtime and this product repo into a local virtual environment:

uv venv --python 3.11 .venv
uv pip install -e ../agent-runtime -e ".[server]" --python .venv/bin/python
uv pip install pytest --python .venv/bin/python

Configure a model:

export TIRI_LLM_API=openai-chat-completions
export TIRI_MODEL=your-model-name
export TIRI_LLM_API_KEY=your-api-key
export TIRI_LLM_BASE_URL=https://api.openai.com/v1

Run CLI chat:

.venv/bin/tiri

Start the local API and web shell:

.venv/bin/tiri server start

The server command starts:

  • FastAPI at http://127.0.0.1:8000
  • Next.js at http://127.0.0.1:3000

To run only the FastAPI backend:

.venv/bin/tiri server start --no-web

Configuration

Variable Purpose
TIRI_LLM_API Provider API shape, such as openai-chat-completions.
TIRI_MODEL Model name. Required unless passed with --model.
TIRI_LLM_API_KEY Provider API key.
TIRI_LLM_BASE_URL Optional provider base URL.
TIRI_PROMPT_PATH Optional file overriding the base system prompt.
TIRI_PROFILE_PATH Optional local user/profile prompt file.
TIRI_SKILLS_PATH Optional local skills directory.
TIRI_DATA_DIR Local data directory, defaulting to ~/.tiri when configured.
TIRI_DB_PATH Explicit SQLite database path.
TIRI_COLLABORATION_MODE Collaboration mode, currently default or plan.

CLI flags mirror the most common settings:

.venv/bin/tiri --model your-model --data-dir /path/to/tiri-data
.venv/bin/tiri server start --db-path /path/to/tiri.sqlite

Prompts And Skills

Tiri builds the system prompt from:

  • prompts/base.py for the base identity, operating loop, tool rules, workspace rules, safety guidance, and voice.
  • The runtime environment, such as cli, web, or channel:.
  • Optional profile context from TIRI_PROFILE_PATH.
  • Optional skill registry context from TIRI_SKILLS_PATH.

If TIRI_SKILLS_PATH is unset, it defaults to ~/.tiri/skills when TIRI_DATA_DIR is configured, otherwise ./skills.

Sandbox Tools

Enable local workspace tools:

export TIRI_SANDBOX_ROOT=/path/to/workspace
export TIRI_SANDBOX_BACKEND=local

Use Docker-backed shell execution while keeping the same mounted workspace:

export TIRI_SANDBOX_BACKEND=local-docker
export TIRI_SANDBOX_DOCKER_IMAGE=python:3.12-slim

The Docker backend keeps one container per Tiri session. The container name is derived from the session id, mounted workspace, and image, so resumed sessions reuse their sandbox container and later run_shell calls execute through docker exec.

Sandbox tools currently include read_file, write_file, list_files, and run_shell.

Local Data And Channels

Tiri stores local backend data in SQLite. By default, the durable database is:

~/.tiri/tiri.db

The database stores chat sessions, message history, event-stream records, local settings, channel settings, proactive targets, and channel outbox entries.

Supported local channel providers:

  • Telegram long polling via the Bot API.
  • Weixin polling via the ilink bot API.
  • Feishu/Lark websocket via lark-oapi.

Inbound channel events are routed through:

POST /api/channels/inbound

When exposed beyond localhost, set an inbound token and send it as Authorization: Bearer ... or X-Tiri-Channel-Token:

export TIRI_CHANNEL_INBOUND_TOKEN=local-secret

Background channel services are enabled by default and can be disabled with:

export TIRI_CHANNEL_GATEWAY_ENABLED=false
export TIRI_CHANNEL_OUTBOX_ENABLED=false

Development

Run Python tests:

.venv/bin/python -m pytest tests -q

Run frontend checks:

cd web
npm run lint
npm run build

License

Tiri Agent is licensed under the GNU Affero General Public License, version 3 only. See LICENSE for details.

Nearby in the ranking
Similar items