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.
Files changed (51) hide show
  1. vyrii-0.1.0/PKG-INFO +277 -0
  2. vyrii-0.1.0/README.md +260 -0
  3. vyrii-0.1.0/pyproject.toml +32 -0
  4. vyrii-0.1.0/setup.cfg +4 -0
  5. vyrii-0.1.0/vyrii/__init__.py +1 -0
  6. vyrii-0.1.0/vyrii/__main__.py +149 -0
  7. vyrii-0.1.0/vyrii/__pycache__/__init__.cpython-311.pyc +0 -0
  8. vyrii-0.1.0/vyrii/__pycache__/__main__.cpython-311.pyc +0 -0
  9. vyrii-0.1.0/vyrii/__pycache__/adapter.cpython-311.pyc +0 -0
  10. vyrii-0.1.0/vyrii/__pycache__/api.cpython-311.pyc +0 -0
  11. vyrii-0.1.0/vyrii/__pycache__/app.cpython-311.pyc +0 -0
  12. vyrii-0.1.0/vyrii/__pycache__/engine.cpython-311.pyc +0 -0
  13. vyrii-0.1.0/vyrii/__pycache__/history.cpython-311.pyc +0 -0
  14. vyrii-0.1.0/vyrii/__pycache__/i18n.cpython-311.pyc +0 -0
  15. vyrii-0.1.0/vyrii/__pycache__/mcp_client.cpython-311.pyc +0 -0
  16. vyrii-0.1.0/vyrii/__pycache__/parallel.cpython-311.pyc +0 -0
  17. vyrii-0.1.0/vyrii/__pycache__/scheduler.cpython-311.pyc +0 -0
  18. vyrii-0.1.0/vyrii/__pycache__/tools.cpython-311.pyc +0 -0
  19. vyrii-0.1.0/vyrii/adapter.py +130 -0
  20. vyrii-0.1.0/vyrii/api.py +396 -0
  21. vyrii-0.1.0/vyrii/app.py +3296 -0
  22. vyrii-0.1.0/vyrii/engine.py +192 -0
  23. vyrii-0.1.0/vyrii/flows/__init__.py +0 -0
  24. vyrii-0.1.0/vyrii/flows/__pycache__/__init__.cpython-311.pyc +0 -0
  25. vyrii-0.1.0/vyrii/flows/__pycache__/deepagent_md.cpython-311.pyc +0 -0
  26. vyrii-0.1.0/vyrii/flows/__pycache__/obfuscate.cpython-311.pyc +0 -0
  27. vyrii-0.1.0/vyrii/flows/__pycache__/scan.cpython-311.pyc +0 -0
  28. vyrii-0.1.0/vyrii/flows/__pycache__/webanalys.cpython-311.pyc +0 -0
  29. vyrii-0.1.0/vyrii/flows/__pycache__/webask.cpython-311.pyc +0 -0
  30. vyrii-0.1.0/vyrii/flows/__pycache__/webcrawl.cpython-311.pyc +0 -0
  31. vyrii-0.1.0/vyrii/flows/__pycache__/webindex.cpython-311.pyc +0 -0
  32. vyrii-0.1.0/vyrii/flows/deepagent_md.py +1415 -0
  33. vyrii-0.1.0/vyrii/flows/deobfuscate.py +234 -0
  34. vyrii-0.1.0/vyrii/flows/obfuscate.py +268 -0
  35. vyrii-0.1.0/vyrii/flows/scan.py +293 -0
  36. vyrii-0.1.0/vyrii/flows/webanalys.py +167 -0
  37. vyrii-0.1.0/vyrii/flows/webask.py +59 -0
  38. vyrii-0.1.0/vyrii/flows/webcrawl.py +660 -0
  39. vyrii-0.1.0/vyrii/flows/webindex.py +181 -0
  40. vyrii-0.1.0/vyrii/history.py +130 -0
  41. vyrii-0.1.0/vyrii/i18n.py +784 -0
  42. vyrii-0.1.0/vyrii/mcp_client.py +86 -0
  43. vyrii-0.1.0/vyrii/parallel.py +155 -0
  44. vyrii-0.1.0/vyrii/scheduler.py +214 -0
  45. vyrii-0.1.0/vyrii/tools.py +117 -0
  46. vyrii-0.1.0/vyrii.egg-info/PKG-INFO +277 -0
  47. vyrii-0.1.0/vyrii.egg-info/SOURCES.txt +49 -0
  48. vyrii-0.1.0/vyrii.egg-info/dependency_links.txt +1 -0
  49. vyrii-0.1.0/vyrii.egg-info/entry_points.txt +2 -0
  50. vyrii-0.1.0/vyrii.egg-info/requires.txt +10 -0
  51. 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
+ ![vyrii](images/vyrii2.png)
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
+ ![vyrii](images/vyrii2.png)
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,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1 @@
1
+ __version__ = "0.1.0"