vyrii 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vyrii-0.1.0/PKG-INFO +277 -0
- vyrii-0.1.0/README.md +260 -0
- vyrii-0.1.0/pyproject.toml +32 -0
- vyrii-0.1.0/setup.cfg +4 -0
- vyrii-0.1.0/vyrii/__init__.py +1 -0
- vyrii-0.1.0/vyrii/__main__.py +149 -0
- vyrii-0.1.0/vyrii/__pycache__/__init__.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/__main__.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/adapter.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/api.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/app.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/engine.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/history.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/i18n.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/mcp_client.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/parallel.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/scheduler.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/__pycache__/tools.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/adapter.py +130 -0
- vyrii-0.1.0/vyrii/api.py +396 -0
- vyrii-0.1.0/vyrii/app.py +3296 -0
- vyrii-0.1.0/vyrii/engine.py +192 -0
- vyrii-0.1.0/vyrii/flows/__init__.py +0 -0
- vyrii-0.1.0/vyrii/flows/__pycache__/__init__.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/flows/__pycache__/deepagent_md.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/flows/__pycache__/obfuscate.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/flows/__pycache__/scan.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/flows/__pycache__/webanalys.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/flows/__pycache__/webask.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/flows/__pycache__/webcrawl.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/flows/__pycache__/webindex.cpython-311.pyc +0 -0
- vyrii-0.1.0/vyrii/flows/deepagent_md.py +1415 -0
- vyrii-0.1.0/vyrii/flows/deobfuscate.py +234 -0
- vyrii-0.1.0/vyrii/flows/obfuscate.py +268 -0
- vyrii-0.1.0/vyrii/flows/scan.py +293 -0
- vyrii-0.1.0/vyrii/flows/webanalys.py +167 -0
- vyrii-0.1.0/vyrii/flows/webask.py +59 -0
- vyrii-0.1.0/vyrii/flows/webcrawl.py +660 -0
- vyrii-0.1.0/vyrii/flows/webindex.py +181 -0
- vyrii-0.1.0/vyrii/history.py +130 -0
- vyrii-0.1.0/vyrii/i18n.py +784 -0
- vyrii-0.1.0/vyrii/mcp_client.py +86 -0
- vyrii-0.1.0/vyrii/parallel.py +155 -0
- vyrii-0.1.0/vyrii/scheduler.py +214 -0
- vyrii-0.1.0/vyrii/tools.py +117 -0
- vyrii-0.1.0/vyrii.egg-info/PKG-INFO +277 -0
- vyrii-0.1.0/vyrii.egg-info/SOURCES.txt +49 -0
- vyrii-0.1.0/vyrii.egg-info/dependency_links.txt +1 -0
- vyrii-0.1.0/vyrii.egg-info/entry_points.txt +2 -0
- vyrii-0.1.0/vyrii.egg-info/requires.txt +10 -0
- vyrii-0.1.0/vyrii.egg-info/top_level.txt +3 -0
vyrii-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vyrii
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Local AI web UI — chat, translate, web research, deep document generation, RAG, and file management via Gradio. Powered by Ollama or any OpenAI-compatible backend.
|
|
5
|
+
Project-URL: Homepage, https://github.com/szholobetsky/vyrii
|
|
6
|
+
Project-URL: Repository, https://github.com/szholobetsky/vyrii
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
Requires-Dist: gradio>=6.0
|
|
10
|
+
Requires-Dist: requests>=2.28
|
|
11
|
+
Requires-Dist: lxml>=4.9
|
|
12
|
+
Provides-Extra: html
|
|
13
|
+
Requires-Dist: lxml_html_clean; extra == "html"
|
|
14
|
+
Provides-Extra: api
|
|
15
|
+
Requires-Dist: fastapi>=0.110; extra == "api"
|
|
16
|
+
Requires-Dist: uvicorn[standard]>=0.29; extra == "api"
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
# vyrii
|
|
21
|
+
|
|
22
|
+
Local AI web UI — chat, translate, web research, deep document generation, file management, and RAG — powered by Ollama or any OpenAI-compatible backend.
|
|
23
|
+
|
|
24
|
+
The name comes from the Ukrainian word *вирій* — the mythical warm land where birds migrate in winter. A quiet, self-contained place where intelligence lives locally, without the cloud.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## What it is
|
|
29
|
+
|
|
30
|
+
**vyrii** is a browser-based interface that runs entirely on your hardware. It connects to a local LLM (Ollama, LMStudio, or any `/v1/chat/completions` endpoint) and provides a suite of AI tools through a clean Gradio UI — without sending your data to any cloud service.
|
|
31
|
+
|
|
32
|
+
It also exposes an OpenAI-compatible API (`/v1/chat/completions`) and a set of vyrii-specific endpoints (`/vyrii/*`), so it can serve as a backend for other tools in the SIMARGL toolkit.
|
|
33
|
+
|
|
34
|
+
vyrii continues the same philosophy as **1bcoder**: give users with modest hardware a way to work effectively with ultra-small models — from 0.5B to 7B parameters, within a 4 000-token context window. There are many reasons a person may be forced to rely on small local models: no internet connection, a company or institutional policy that prohibits cloud AI, running on battery in the field, working from a shelter or restricted environment. vyrii has no autonomous agents — but every tool works reliably with `gemma3:1b` or `qwen3:1.7b`. The premise is the same: the smallest model available right now is enough to be useful.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Features
|
|
39
|
+
|
|
40
|
+
### Chat
|
|
41
|
+
Streaming conversation with a local LLM. Supports multiple saved sessions, context compaction, file loading, and export. A spinner shows when the model is generating — no silent waits.
|
|
42
|
+
|
|
43
|
+
### Translate
|
|
44
|
+
On-the-fly translation in four modes:
|
|
45
|
+
|
|
46
|
+
| Mode | Backend | Privacy |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| `llm` | Local model via Ollama | Full — nothing leaves your machine |
|
|
49
|
+
| `mini` | argostranslate (~100 MB per pair) | Full |
|
|
50
|
+
| `offline` | NLLB-200 (ctranslate2, ~600 MB) | Full |
|
|
51
|
+
| `online` | Google Translate | ⚠ Sends text to Google |
|
|
52
|
+
|
|
53
|
+
### Obfuscate / Deobfuscate
|
|
54
|
+
Replace sensitive terms before sending to a cloud AI, then restore the response. Uses a YAML glossary in two modes: smart (LLM-based, handles grammar) and force (instant direct substitution).
|
|
55
|
+
|
|
56
|
+
### RAG
|
|
57
|
+
Search a simargl semantic index by project. Ask the LLM to synthesise an answer from retrieved chunks. Works with indexes built by the simargl tool or the WebIndex tab.
|
|
58
|
+
|
|
59
|
+
### MCP
|
|
60
|
+
Connect external tool servers via the Model Context Protocol (filesystem, web, git, database, browser…). Call tools directly and pipe results into the chat.
|
|
61
|
+
|
|
62
|
+
### Team
|
|
63
|
+
Parallel LLM workers with different aspects or profiles. Each worker answers a facet of the same question; results are combined (join or compact) into a single context block.
|
|
64
|
+
|
|
65
|
+
### WebAsk
|
|
66
|
+
Ask a question about a URL or let vyrii search the web (DuckDuckGo), fetch the top N pages, and synthesise an answer. Shows live per-page fetch progress.
|
|
67
|
+
|
|
68
|
+
### WebAnalys
|
|
69
|
+
Deep multi-page web research: gather N pages on a topic, rank by relevance, summarise collectively.
|
|
70
|
+
|
|
71
|
+
### WebCrawl
|
|
72
|
+
Crawl a website up to N pages deep. Modes: collect links, LLM summarise, extract structured data (table columns), export as markdown. Optionally indexes crawled content for RAG.
|
|
73
|
+
|
|
74
|
+
### WebIndex
|
|
75
|
+
Crawl a URL and index the content with simargl for later RAG retrieval.
|
|
76
|
+
|
|
77
|
+
### DeepAgent MD
|
|
78
|
+
Multi-section document generation from a task description. Supports web augmentation, RAG context, custom presets (quick/balanced/deep), plan and list injection, and sliding-window compaction (`--fix` / `--scan`) for large outputs.
|
|
79
|
+
|
|
80
|
+
### Scan
|
|
81
|
+
Compact a large file or entire directory into a single summary markdown. Works chunk by chunk — optionally filters chunks by a query (filter mode) or summarises everything (general mode). Supports recursive compaction until the output fits a target size.
|
|
82
|
+
|
|
83
|
+
### Files
|
|
84
|
+
File manager for `~/.vyrii/`. Browse the directory tree, select files, copy paths to Scan or Index, upload, create folders, delete, view with syntax highlighting, and index directories with simargl.
|
|
85
|
+
|
|
86
|
+
### Scheduler
|
|
87
|
+
Background task scheduler. Create recurring or one-off tasks (daily, weekly, interval), toggle, run immediately, and tail logs.
|
|
88
|
+
|
|
89
|
+
### Profile
|
|
90
|
+
Manage parallel worker profiles for the Team tab. Each profile defines a set of models/hosts with aspect roles.
|
|
91
|
+
|
|
92
|
+
### Settings
|
|
93
|
+
Switch theme (including GithubDark, Dracula, Solarized), language (EN/UK), timeout, and backend connection. Changes apply on the next session start.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Quick install
|
|
98
|
+
|
|
99
|
+
### Option 1 — PyPI
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
pip install vyrii
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Option 2 — Clone
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
git clone https://github.com/szholobetsky/vyrii.git
|
|
109
|
+
cd vyrii
|
|
110
|
+
pip install -e .
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Quick start
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# 1. Install Ollama and pull a small model
|
|
119
|
+
ollama pull qwen3:1.7b
|
|
120
|
+
|
|
121
|
+
# 2. Install vyrii
|
|
122
|
+
pip install vyrii
|
|
123
|
+
|
|
124
|
+
# 3. Launch
|
|
125
|
+
vyrii
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Open `http://localhost:4896` — the Chat tab is ready. Pick `qwen3:1.7b` in the model selector and start talking.
|
|
129
|
+
|
|
130
|
+
To use a custom UI port:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
vyrii --ui 8001
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
For Ukrainian UI:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
vyrii --lang uk
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
For a dark theme:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
vyrii --theme GithubDark
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Requirements
|
|
151
|
+
|
|
152
|
+
| Dependency | Version |
|
|
153
|
+
|---|---|
|
|
154
|
+
| Python | ≥ 3.10 |
|
|
155
|
+
| gradio | ≥ 6.0 |
|
|
156
|
+
| requests | ≥ 2.28 |
|
|
157
|
+
| [Ollama](https://ollama.com) | any recent version |
|
|
158
|
+
|
|
159
|
+
Optional:
|
|
160
|
+
- `fastapi` + `uvicorn` — for the REST API server (`pip install vyrii[api]`)
|
|
161
|
+
- `lxml_html_clean` — for cleaner HTML extraction in web tools (`pip install vyrii[html]`)
|
|
162
|
+
- `simargl` — for RAG and WebIndex (`pip install simargl`)
|
|
163
|
+
- `argostranslate` — for offline translation mini mode
|
|
164
|
+
- `ctranslate2` + `sentencepiece` — for NLLB-200 offline translation
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Running
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
vyrii
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Or with options:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
vyrii --host http://localhost:11434 # Ollama (default)
|
|
178
|
+
vyrii --host openai://localhost:1234 # LMStudio
|
|
179
|
+
vyrii --port 8080
|
|
180
|
+
vyrii --lang uk # Ukrainian UI
|
|
181
|
+
vyrii --theme GithubDark
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
The web UI opens at `http://localhost:4896` by default.
|
|
185
|
+
|
|
186
|
+
### With API server
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
vyrii --api
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Starts both the Gradio UI and a FastAPI server on port 8002:
|
|
193
|
+
|
|
194
|
+
- `GET /v1/models` — list available models
|
|
195
|
+
- `POST /v1/chat/completions` — OpenAI-compatible chat (streaming + non-streaming)
|
|
196
|
+
- `POST /vyrii/translate`
|
|
197
|
+
- `POST /vyrii/webask`
|
|
198
|
+
- `POST /vyrii/webcrawl`
|
|
199
|
+
- `POST /vyrii/deepagent`
|
|
200
|
+
- `POST /vyrii/webanalys`
|
|
201
|
+
- `GET /vyrii/files/list`
|
|
202
|
+
- `POST /vyrii/files/mkdir`
|
|
203
|
+
- `POST /vyrii/files/upload`
|
|
204
|
+
- `DELETE /vyrii/files`
|
|
205
|
+
- `POST /vyrii/files/index`
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Project layout
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
vyrii/
|
|
213
|
+
├── vyrii/
|
|
214
|
+
│ ├── app.py # Gradio UI — all tabs and handlers
|
|
215
|
+
│ ├── api.py # FastAPI REST server
|
|
216
|
+
│ ├── engine.py # LLM streaming, model listing, smart context
|
|
217
|
+
│ ├── adapter.py # ChatAdapter — unified interface for flows
|
|
218
|
+
│ ├── tools.py # fetch_text, HTML stripping
|
|
219
|
+
│ ├── history.py # SQLite chat history
|
|
220
|
+
│ ├── scheduler.py # background task scheduler
|
|
221
|
+
│ ├── parallel.py # parallel profile management
|
|
222
|
+
│ ├── mcp_client.py # MCP server subprocess management
|
|
223
|
+
│ ├── i18n.py # EN / UK string tables
|
|
224
|
+
│ ├── __main__.py # CLI entry point
|
|
225
|
+
│ └── flows/
|
|
226
|
+
│ ├── webask.py # web search + answer flow
|
|
227
|
+
│ ├── webcrawl.py # site crawler flow
|
|
228
|
+
│ ├── webanalys.py # multi-page web research flow
|
|
229
|
+
│ ├── webindex.py # crawl + simargl index flow
|
|
230
|
+
│ ├── deepagent_md.py # multi-section document generation
|
|
231
|
+
│ ├── scan.py # large-file compaction flow
|
|
232
|
+
│ ├── obfuscate.py
|
|
233
|
+
│ └── deobfuscate.py
|
|
234
|
+
├── images/
|
|
235
|
+
│ └── vyrii2.png
|
|
236
|
+
├── pyproject.toml
|
|
237
|
+
├── README.md
|
|
238
|
+
└── .gitignore
|
|
239
|
+
|
|
240
|
+
~/.vyrii/ # user data (created on first run)
|
|
241
|
+
├── crawl/ # WebCrawl output
|
|
242
|
+
├── files/ # user files (for RAG indexing)
|
|
243
|
+
├── .simargl/ # simargl RAG index
|
|
244
|
+
├── .1bcoder/scan/ # Scan flow output (compact_N.md)
|
|
245
|
+
├── config.json # saved settings (theme, lang, timeout)
|
|
246
|
+
├── scheduler.json # scheduler tasks
|
|
247
|
+
└── history.db # chat history (SQLite)
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Part of the SIMARGL toolkit
|
|
253
|
+
|
|
254
|
+
vyrii is one of five tools that together form an **intellectual development support system**:
|
|
255
|
+
|
|
256
|
+
| Tool | Role |
|
|
257
|
+
|---|---|
|
|
258
|
+
| **[simargl](https://github.com/szholobetsky/simargl)** | Task-to-code retrieval — given a task description, finds which files and modules are likely affected, using semantic similarity over git history |
|
|
259
|
+
| **[svitovyd](https://github.com/szholobetsky/svitovyd)** | Project map — scans any codebase and produces a structural map of definitions and cross-file dependencies; exposes it as an MCP server |
|
|
260
|
+
| **[1bcoder](https://github.com/szholobetsky/1bcoder)** | AI coding assistant for small local models — surgical context management, agents, parallel inference, proc scripts |
|
|
261
|
+
| **[yasna](https://github.com/szholobetsky/yasna)** | Session memory — indexes conversations from all AI agents so you can find what was discussed, when, and where |
|
|
262
|
+
| **[radogast](https://github.com/szholobetsky/radogast)** | Context drift monitor — measures how far an AI agent's conversation has drifted from the original task |
|
|
263
|
+
|
|
264
|
+
- **simargl** answers: *what code is related to this task?*
|
|
265
|
+
- **svitovyd** answers: *how is the code structured and what depends on what?*
|
|
266
|
+
- **1bcoder** answers: *how do I work with local models efficiently?*
|
|
267
|
+
- **vyrii** answers: *how do I access all of this through a browser?*
|
|
268
|
+
- **yasna** answers: *where did I already discuss this?*
|
|
269
|
+
- **radogast** answers: *is the AI agent still on track toward the goal?*
|
|
270
|
+
|
|
271
|
+
Together they cover the full development loop: understand the codebase, find relevant history, work with AI locally, access everything through a web UI, remember what was decided, and verify the context stays on target.
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
**(c) 2026 Stanislav Zholobetskyi, Oleh Andriichuk**
|
|
276
|
+
Institute for Information Recording, National Academy of Sciences of Ukraine, Kyiv
|
|
277
|
+
*PhD research: «Intelligent Technology for Software Development and Maintenance Support»*
|
vyrii-0.1.0/README.md
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# vyrii
|
|
4
|
+
|
|
5
|
+
Local AI web UI — chat, translate, web research, deep document generation, file management, and RAG — powered by Ollama or any OpenAI-compatible backend.
|
|
6
|
+
|
|
7
|
+
The name comes from the Ukrainian word *вирій* — the mythical warm land where birds migrate in winter. A quiet, self-contained place where intelligence lives locally, without the cloud.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## What it is
|
|
12
|
+
|
|
13
|
+
**vyrii** is a browser-based interface that runs entirely on your hardware. It connects to a local LLM (Ollama, LMStudio, or any `/v1/chat/completions` endpoint) and provides a suite of AI tools through a clean Gradio UI — without sending your data to any cloud service.
|
|
14
|
+
|
|
15
|
+
It also exposes an OpenAI-compatible API (`/v1/chat/completions`) and a set of vyrii-specific endpoints (`/vyrii/*`), so it can serve as a backend for other tools in the SIMARGL toolkit.
|
|
16
|
+
|
|
17
|
+
vyrii continues the same philosophy as **1bcoder**: give users with modest hardware a way to work effectively with ultra-small models — from 0.5B to 7B parameters, within a 4 000-token context window. There are many reasons a person may be forced to rely on small local models: no internet connection, a company or institutional policy that prohibits cloud AI, running on battery in the field, working from a shelter or restricted environment. vyrii has no autonomous agents — but every tool works reliably with `gemma3:1b` or `qwen3:1.7b`. The premise is the same: the smallest model available right now is enough to be useful.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Features
|
|
22
|
+
|
|
23
|
+
### Chat
|
|
24
|
+
Streaming conversation with a local LLM. Supports multiple saved sessions, context compaction, file loading, and export. A spinner shows when the model is generating — no silent waits.
|
|
25
|
+
|
|
26
|
+
### Translate
|
|
27
|
+
On-the-fly translation in four modes:
|
|
28
|
+
|
|
29
|
+
| Mode | Backend | Privacy |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| `llm` | Local model via Ollama | Full — nothing leaves your machine |
|
|
32
|
+
| `mini` | argostranslate (~100 MB per pair) | Full |
|
|
33
|
+
| `offline` | NLLB-200 (ctranslate2, ~600 MB) | Full |
|
|
34
|
+
| `online` | Google Translate | ⚠ Sends text to Google |
|
|
35
|
+
|
|
36
|
+
### Obfuscate / Deobfuscate
|
|
37
|
+
Replace sensitive terms before sending to a cloud AI, then restore the response. Uses a YAML glossary in two modes: smart (LLM-based, handles grammar) and force (instant direct substitution).
|
|
38
|
+
|
|
39
|
+
### RAG
|
|
40
|
+
Search a simargl semantic index by project. Ask the LLM to synthesise an answer from retrieved chunks. Works with indexes built by the simargl tool or the WebIndex tab.
|
|
41
|
+
|
|
42
|
+
### MCP
|
|
43
|
+
Connect external tool servers via the Model Context Protocol (filesystem, web, git, database, browser…). Call tools directly and pipe results into the chat.
|
|
44
|
+
|
|
45
|
+
### Team
|
|
46
|
+
Parallel LLM workers with different aspects or profiles. Each worker answers a facet of the same question; results are combined (join or compact) into a single context block.
|
|
47
|
+
|
|
48
|
+
### WebAsk
|
|
49
|
+
Ask a question about a URL or let vyrii search the web (DuckDuckGo), fetch the top N pages, and synthesise an answer. Shows live per-page fetch progress.
|
|
50
|
+
|
|
51
|
+
### WebAnalys
|
|
52
|
+
Deep multi-page web research: gather N pages on a topic, rank by relevance, summarise collectively.
|
|
53
|
+
|
|
54
|
+
### WebCrawl
|
|
55
|
+
Crawl a website up to N pages deep. Modes: collect links, LLM summarise, extract structured data (table columns), export as markdown. Optionally indexes crawled content for RAG.
|
|
56
|
+
|
|
57
|
+
### WebIndex
|
|
58
|
+
Crawl a URL and index the content with simargl for later RAG retrieval.
|
|
59
|
+
|
|
60
|
+
### DeepAgent MD
|
|
61
|
+
Multi-section document generation from a task description. Supports web augmentation, RAG context, custom presets (quick/balanced/deep), plan and list injection, and sliding-window compaction (`--fix` / `--scan`) for large outputs.
|
|
62
|
+
|
|
63
|
+
### Scan
|
|
64
|
+
Compact a large file or entire directory into a single summary markdown. Works chunk by chunk — optionally filters chunks by a query (filter mode) or summarises everything (general mode). Supports recursive compaction until the output fits a target size.
|
|
65
|
+
|
|
66
|
+
### Files
|
|
67
|
+
File manager for `~/.vyrii/`. Browse the directory tree, select files, copy paths to Scan or Index, upload, create folders, delete, view with syntax highlighting, and index directories with simargl.
|
|
68
|
+
|
|
69
|
+
### Scheduler
|
|
70
|
+
Background task scheduler. Create recurring or one-off tasks (daily, weekly, interval), toggle, run immediately, and tail logs.
|
|
71
|
+
|
|
72
|
+
### Profile
|
|
73
|
+
Manage parallel worker profiles for the Team tab. Each profile defines a set of models/hosts with aspect roles.
|
|
74
|
+
|
|
75
|
+
### Settings
|
|
76
|
+
Switch theme (including GithubDark, Dracula, Solarized), language (EN/UK), timeout, and backend connection. Changes apply on the next session start.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Quick install
|
|
81
|
+
|
|
82
|
+
### Option 1 — PyPI
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pip install vyrii
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Option 2 — Clone
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
git clone https://github.com/szholobetsky/vyrii.git
|
|
92
|
+
cd vyrii
|
|
93
|
+
pip install -e .
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Quick start
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# 1. Install Ollama and pull a small model
|
|
102
|
+
ollama pull qwen3:1.7b
|
|
103
|
+
|
|
104
|
+
# 2. Install vyrii
|
|
105
|
+
pip install vyrii
|
|
106
|
+
|
|
107
|
+
# 3. Launch
|
|
108
|
+
vyrii
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Open `http://localhost:4896` — the Chat tab is ready. Pick `qwen3:1.7b` in the model selector and start talking.
|
|
112
|
+
|
|
113
|
+
To use a custom UI port:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
vyrii --ui 8001
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
For Ukrainian UI:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
vyrii --lang uk
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
For a dark theme:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
vyrii --theme GithubDark
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Requirements
|
|
134
|
+
|
|
135
|
+
| Dependency | Version |
|
|
136
|
+
|---|---|
|
|
137
|
+
| Python | ≥ 3.10 |
|
|
138
|
+
| gradio | ≥ 6.0 |
|
|
139
|
+
| requests | ≥ 2.28 |
|
|
140
|
+
| [Ollama](https://ollama.com) | any recent version |
|
|
141
|
+
|
|
142
|
+
Optional:
|
|
143
|
+
- `fastapi` + `uvicorn` — for the REST API server (`pip install vyrii[api]`)
|
|
144
|
+
- `lxml_html_clean` — for cleaner HTML extraction in web tools (`pip install vyrii[html]`)
|
|
145
|
+
- `simargl` — for RAG and WebIndex (`pip install simargl`)
|
|
146
|
+
- `argostranslate` — for offline translation mini mode
|
|
147
|
+
- `ctranslate2` + `sentencepiece` — for NLLB-200 offline translation
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Running
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
vyrii
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Or with options:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
vyrii --host http://localhost:11434 # Ollama (default)
|
|
161
|
+
vyrii --host openai://localhost:1234 # LMStudio
|
|
162
|
+
vyrii --port 8080
|
|
163
|
+
vyrii --lang uk # Ukrainian UI
|
|
164
|
+
vyrii --theme GithubDark
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
The web UI opens at `http://localhost:4896` by default.
|
|
168
|
+
|
|
169
|
+
### With API server
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
vyrii --api
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Starts both the Gradio UI and a FastAPI server on port 8002:
|
|
176
|
+
|
|
177
|
+
- `GET /v1/models` — list available models
|
|
178
|
+
- `POST /v1/chat/completions` — OpenAI-compatible chat (streaming + non-streaming)
|
|
179
|
+
- `POST /vyrii/translate`
|
|
180
|
+
- `POST /vyrii/webask`
|
|
181
|
+
- `POST /vyrii/webcrawl`
|
|
182
|
+
- `POST /vyrii/deepagent`
|
|
183
|
+
- `POST /vyrii/webanalys`
|
|
184
|
+
- `GET /vyrii/files/list`
|
|
185
|
+
- `POST /vyrii/files/mkdir`
|
|
186
|
+
- `POST /vyrii/files/upload`
|
|
187
|
+
- `DELETE /vyrii/files`
|
|
188
|
+
- `POST /vyrii/files/index`
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Project layout
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
vyrii/
|
|
196
|
+
├── vyrii/
|
|
197
|
+
│ ├── app.py # Gradio UI — all tabs and handlers
|
|
198
|
+
│ ├── api.py # FastAPI REST server
|
|
199
|
+
│ ├── engine.py # LLM streaming, model listing, smart context
|
|
200
|
+
│ ├── adapter.py # ChatAdapter — unified interface for flows
|
|
201
|
+
│ ├── tools.py # fetch_text, HTML stripping
|
|
202
|
+
│ ├── history.py # SQLite chat history
|
|
203
|
+
│ ├── scheduler.py # background task scheduler
|
|
204
|
+
│ ├── parallel.py # parallel profile management
|
|
205
|
+
│ ├── mcp_client.py # MCP server subprocess management
|
|
206
|
+
│ ├── i18n.py # EN / UK string tables
|
|
207
|
+
│ ├── __main__.py # CLI entry point
|
|
208
|
+
│ └── flows/
|
|
209
|
+
│ ├── webask.py # web search + answer flow
|
|
210
|
+
│ ├── webcrawl.py # site crawler flow
|
|
211
|
+
│ ├── webanalys.py # multi-page web research flow
|
|
212
|
+
│ ├── webindex.py # crawl + simargl index flow
|
|
213
|
+
│ ├── deepagent_md.py # multi-section document generation
|
|
214
|
+
│ ├── scan.py # large-file compaction flow
|
|
215
|
+
│ ├── obfuscate.py
|
|
216
|
+
│ └── deobfuscate.py
|
|
217
|
+
├── images/
|
|
218
|
+
│ └── vyrii2.png
|
|
219
|
+
├── pyproject.toml
|
|
220
|
+
├── README.md
|
|
221
|
+
└── .gitignore
|
|
222
|
+
|
|
223
|
+
~/.vyrii/ # user data (created on first run)
|
|
224
|
+
├── crawl/ # WebCrawl output
|
|
225
|
+
├── files/ # user files (for RAG indexing)
|
|
226
|
+
├── .simargl/ # simargl RAG index
|
|
227
|
+
├── .1bcoder/scan/ # Scan flow output (compact_N.md)
|
|
228
|
+
├── config.json # saved settings (theme, lang, timeout)
|
|
229
|
+
├── scheduler.json # scheduler tasks
|
|
230
|
+
└── history.db # chat history (SQLite)
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Part of the SIMARGL toolkit
|
|
236
|
+
|
|
237
|
+
vyrii is one of five tools that together form an **intellectual development support system**:
|
|
238
|
+
|
|
239
|
+
| Tool | Role |
|
|
240
|
+
|---|---|
|
|
241
|
+
| **[simargl](https://github.com/szholobetsky/simargl)** | Task-to-code retrieval — given a task description, finds which files and modules are likely affected, using semantic similarity over git history |
|
|
242
|
+
| **[svitovyd](https://github.com/szholobetsky/svitovyd)** | Project map — scans any codebase and produces a structural map of definitions and cross-file dependencies; exposes it as an MCP server |
|
|
243
|
+
| **[1bcoder](https://github.com/szholobetsky/1bcoder)** | AI coding assistant for small local models — surgical context management, agents, parallel inference, proc scripts |
|
|
244
|
+
| **[yasna](https://github.com/szholobetsky/yasna)** | Session memory — indexes conversations from all AI agents so you can find what was discussed, when, and where |
|
|
245
|
+
| **[radogast](https://github.com/szholobetsky/radogast)** | Context drift monitor — measures how far an AI agent's conversation has drifted from the original task |
|
|
246
|
+
|
|
247
|
+
- **simargl** answers: *what code is related to this task?*
|
|
248
|
+
- **svitovyd** answers: *how is the code structured and what depends on what?*
|
|
249
|
+
- **1bcoder** answers: *how do I work with local models efficiently?*
|
|
250
|
+
- **vyrii** answers: *how do I access all of this through a browser?*
|
|
251
|
+
- **yasna** answers: *where did I already discuss this?*
|
|
252
|
+
- **radogast** answers: *is the AI agent still on track toward the goal?*
|
|
253
|
+
|
|
254
|
+
Together they cover the full development loop: understand the codebase, find relevant history, work with AI locally, access everything through a web UI, remember what was decided, and verify the context stays on target.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
**(c) 2026 Stanislav Zholobetskyi, Oleh Andriichuk**
|
|
259
|
+
Institute for Information Recording, National Academy of Sciences of Ukraine, Kyiv
|
|
260
|
+
*PhD research: «Intelligent Technology for Software Development and Maintenance Support»*
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "vyrii"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Local AI web UI — chat, translate, web research, deep document generation, RAG, and file management via Gradio. Powered by Ollama or any OpenAI-compatible backend."
|
|
9
|
+
requires-python = ">=3.10"
|
|
10
|
+
readme = {file = "README.md", content-type = "text/markdown"}
|
|
11
|
+
dependencies = [
|
|
12
|
+
"gradio>=6.0",
|
|
13
|
+
"requests>=2.28",
|
|
14
|
+
"lxml>=4.9",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
[project.optional-dependencies]
|
|
18
|
+
html = ["lxml_html_clean"]
|
|
19
|
+
api = ["fastapi>=0.110", "uvicorn[standard]>=0.29"]
|
|
20
|
+
|
|
21
|
+
[project.urls]
|
|
22
|
+
Homepage = "https://github.com/szholobetsky/vyrii"
|
|
23
|
+
Repository = "https://github.com/szholobetsky/vyrii"
|
|
24
|
+
|
|
25
|
+
[project.scripts]
|
|
26
|
+
vyrii = "vyrii.__main__:main"
|
|
27
|
+
|
|
28
|
+
[tool.setuptools.packages.find]
|
|
29
|
+
where = ["."]
|
|
30
|
+
|
|
31
|
+
[tool.setuptools.package-data]
|
|
32
|
+
"vyrii" = ["**/*"]
|
vyrii-0.1.0/setup.cfg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.0"
|