andromity 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 (67) hide show
  1. andromity-0.1.0/LICENSE +21 -0
  2. andromity-0.1.0/PKG-INFO +381 -0
  3. andromity-0.1.0/README.md +340 -0
  4. andromity-0.1.0/pyproject.toml +63 -0
  5. andromity-0.1.0/setup.cfg +4 -0
  6. andromity-0.1.0/src/andromity/__init__.py +2 -0
  7. andromity-0.1.0/src/andromity/assets/sounds/done.wav +0 -0
  8. andromity-0.1.0/src/andromity/cli.py +73 -0
  9. andromity-0.1.0/src/andromity/config.py +316 -0
  10. andromity-0.1.0/src/andromity/core/__init__.py +1 -0
  11. andromity-0.1.0/src/andromity/core/agent.py +211 -0
  12. andromity-0.1.0/src/andromity/core/audio.py +32 -0
  13. andromity-0.1.0/src/andromity/core/cron.py +324 -0
  14. andromity-0.1.0/src/andromity/core/debug_log.py +36 -0
  15. andromity-0.1.0/src/andromity/core/events.py +49 -0
  16. andromity-0.1.0/src/andromity/core/git_ops.py +186 -0
  17. andromity-0.1.0/src/andromity/core/mcp.py +636 -0
  18. andromity-0.1.0/src/andromity/core/models.py +428 -0
  19. andromity-0.1.0/src/andromity/core/oauth.py +454 -0
  20. andromity-0.1.0/src/andromity/core/planner.py +79 -0
  21. andromity-0.1.0/src/andromity/core/profiles.py +122 -0
  22. andromity-0.1.0/src/andromity/core/provider.py +188 -0
  23. andromity-0.1.0/src/andromity/core/search.py +345 -0
  24. andromity-0.1.0/src/andromity/core/security.py +64 -0
  25. andromity-0.1.0/src/andromity/core/session.py +169 -0
  26. andromity-0.1.0/src/andromity/core/todo.py +97 -0
  27. andromity-0.1.0/src/andromity/core/tools.py +1091 -0
  28. andromity-0.1.0/src/andromity/core/web.py +170 -0
  29. andromity-0.1.0/src/andromity/telemetry.py +102 -0
  30. andromity-0.1.0/src/andromity/tui/__init__.py +1 -0
  31. andromity-0.1.0/src/andromity/tui/app.py +1570 -0
  32. andromity-0.1.0/src/andromity/tui/footer.py +456 -0
  33. andromity-0.1.0/src/andromity/tui/markup_utils.py +26 -0
  34. andromity-0.1.0/src/andromity/tui/overlays/__init__.py +1 -0
  35. andromity-0.1.0/src/andromity/tui/overlays/batch_review.py +141 -0
  36. andromity-0.1.0/src/andromity/tui/overlays/cron.py +452 -0
  37. andromity-0.1.0/src/andromity/tui/overlays/model.py +305 -0
  38. andromity-0.1.0/src/andromity/tui/overlays/profile.py +109 -0
  39. andromity-0.1.0/src/andromity/tui/overlays/session.py +143 -0
  40. andromity-0.1.0/src/andromity/tui/overlays/settings.py +1061 -0
  41. andromity-0.1.0/src/andromity/tui/overlays/trust.py +60 -0
  42. andromity-0.1.0/src/andromity/tui/overlays/undo.py +77 -0
  43. andromity-0.1.0/src/andromity/tui/panels/__init__.py +1 -0
  44. andromity-0.1.0/src/andromity/tui/panels/chat.py +446 -0
  45. andromity-0.1.0/src/andromity/tui/panels/diff.py +613 -0
  46. andromity-0.1.0/src/andromity/tui/panels/filetree.py +306 -0
  47. andromity-0.1.0/src/andromity/tui/panels/plan.py +152 -0
  48. andromity-0.1.0/src/andromity.egg-info/PKG-INFO +381 -0
  49. andromity-0.1.0/src/andromity.egg-info/SOURCES.txt +65 -0
  50. andromity-0.1.0/src/andromity.egg-info/dependency_links.txt +1 -0
  51. andromity-0.1.0/src/andromity.egg-info/entry_points.txt +2 -0
  52. andromity-0.1.0/src/andromity.egg-info/requires.txt +19 -0
  53. andromity-0.1.0/src/andromity.egg-info/top_level.txt +1 -0
  54. andromity-0.1.0/tests/test_agent.py +68 -0
  55. andromity-0.1.0/tests/test_config.py +93 -0
  56. andromity-0.1.0/tests/test_events.py +41 -0
  57. andromity-0.1.0/tests/test_git.py +51 -0
  58. andromity-0.1.0/tests/test_mcp.py +276 -0
  59. andromity-0.1.0/tests/test_permissions.py +95 -0
  60. andromity-0.1.0/tests/test_planner.py +120 -0
  61. andromity-0.1.0/tests/test_profiles.py +46 -0
  62. andromity-0.1.0/tests/test_search.py +165 -0
  63. andromity-0.1.0/tests/test_session.py +85 -0
  64. andromity-0.1.0/tests/test_todo.py +100 -0
  65. andromity-0.1.0/tests/test_tools.py +402 -0
  66. andromity-0.1.0/tests/test_undo.py +33 -0
  67. andromity-0.1.0/tests/test_web.py +55 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Andromity Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,381 @@
1
+ Metadata-Version: 2.4
2
+ Name: andromity
3
+ Version: 0.1.0
4
+ Summary: AI coding agent with a beautiful terminal UI. Works with Claude, Gemini, GPT, Ollama and more.
5
+ Author-email: Agentic Market <hello@agenticmarket.dev>
6
+ License: MIT
7
+ Project-URL: Homepage, https://agenticmarket.dev
8
+ Project-URL: Repository, https://github.com/agenticmarket/andromity
9
+ Project-URL: Bug Tracker, https://github.com/agenticmarket/andromity/issues
10
+ Keywords: ai,coding-agent,tui,terminal,llm,claude,gemini,mcp,cli
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Software Development
20
+ Classifier: Topic :: Terminals
21
+ Requires-Python: >=3.11
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: textual>=3.0
25
+ Requires-Dist: litellm>=1.50
26
+ Requires-Dist: tomli>=2.0; python_version < "3.12"
27
+ Requires-Dist: tomli-w>=1.0
28
+ Requires-Dist: gitpython>=3.1
29
+ Requires-Dist: rich>=13.0
30
+ Requires-Dist: click>=8.0
31
+ Requires-Dist: mcp>=1.0.0
32
+ Requires-Dist: httpx>=0.28.0
33
+ Requires-Dist: httpx-sse>=0.4.0
34
+ Requires-Dist: watchdog>=3.0
35
+ Requires-Dist: markdownify>=0.14.0
36
+ Requires-Dist: ddgs>=1.0.0
37
+ Provides-Extra: dev
38
+ Requires-Dist: pytest>=7.0; extra == "dev"
39
+ Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
40
+ Dynamic: license-file
41
+
42
+ <div align="center">
43
+
44
+ # Andromity
45
+
46
+ ![Andromity Screenshot](screen_shot.png)
47
+ > The coding agent that never clocks out.
48
+
49
+ </div>
50
+
51
+ Andromity is a terminal AI coding agent with a rich TUI. Point it at any codebase, pick a model, and it reads, writes, and runs code — with clear tool approval before any changes land.
52
+
53
+ ---
54
+
55
+ ## Install
56
+
57
+ **One command — works on macOS, Linux, and Windows:**
58
+
59
+ ```bash
60
+ pipx install andromity
61
+ ```
62
+
63
+ > Don't have `pipx`? Get it: `pip install pipx` then `pipx ensurepath`
64
+
65
+ **Or with plain pip:**
66
+ ```bash
67
+ pip install andromity
68
+ ```
69
+
70
+ **Requirements:** Python 3.11+
71
+
72
+ ---
73
+
74
+ ## Quick Start
75
+
76
+ ```bash
77
+ andromity
78
+ ```
79
+
80
+ That's it. The TUI opens. Point it at any codebase and start building.
81
+
82
+ ---
83
+
84
+ ## Usage
85
+
86
+ ### Interactive TUI
87
+
88
+ ```bash
89
+ andromity # launch TUI (default)
90
+ andromity tui # same thing
91
+ ```
92
+
93
+ ### Headless / Scripted
94
+
95
+ ```bash
96
+ andromity run "refactor this module to use async"
97
+ andromity run "add error handling to tools.py" --yes # auto-approve all
98
+ andromity run "write tests for session.py" --dry-run # preview only
99
+ ```
100
+
101
+ ---
102
+
103
+ ## Configuration
104
+
105
+ Config lives at `~/.andromity/config.toml` (created automatically on first run).
106
+
107
+ ```toml
108
+ [default]
109
+ provider = "anthropic"
110
+ model = "claude-sonnet-4-5"
111
+ profile = "builder"
112
+
113
+ [[providers]]
114
+ name = "anthropic"
115
+ type = "anthropic"
116
+ api_key = "sk-ant-..."
117
+
118
+ [[providers]]
119
+ name = "openai"
120
+ type = "openai"
121
+ api_key = "sk-..."
122
+
123
+ [[providers]]
124
+ name = "gemini"
125
+ type = "google"
126
+ api_key = "AI..."
127
+
128
+ [[providers]]
129
+ name = "openrouter"
130
+ type = "openrouter"
131
+ api_key = "sk-or-..."
132
+
133
+ [[providers]]
134
+ name = "ollama"
135
+ type = "ollama"
136
+ base_url = "http://localhost:11434"
137
+ ```
138
+
139
+ API keys can also be set via environment variables (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`, `OPENROUTER_API_KEY`, etc.).
140
+
141
+ Andromity uses [LiteLLM](https://github.com/BerriAI/litellm) under the hood, supporting every major provider.
142
+
143
+ ---
144
+
145
+ ## Tested On
146
+
147
+ | Provider | Status |
148
+ |----------|--------|
149
+ | Ollama (local) | ✅ Tested |
150
+ | NVIDIA NIM | ✅ Tested |
151
+ | Groq | ✅ Tested |
152
+ | OpenRouter | ✅ Tested |
153
+ | Google Gemini | ✅ Tested |
154
+ | Anthropic (Claude) | ❌ Not tested — no API access |
155
+ | OpenAI (GPT) | ❌ Not tested — no API access |
156
+ | Grok (xAI) | ❌ Not tested — no API access |
157
+
158
+ If you test with any of these and find issues, please open an issue.
159
+
160
+ ---
161
+
162
+ ## Profiles
163
+
164
+ Switch the agent's role with `--profile` (CLI) or `/profile` (TUI) or via the **Ctrl+J** menu in the TUI:
165
+
166
+ | Profile | What it does | Tools available |
167
+ |---------|-------------|-----------------|
168
+ | `builder` (default) | Plans and implements step-by-step | read, search, write, edit, shell, web, tools, plans |
169
+ | `coder` | Direct implementation, no planning phase | read, search, write, edit, shell, web, tools |
170
+ | `reviewer` | Read-only audit producing HIGH/MED/LOW findings | read, search, list, web, tools |
171
+ | `planner` | Produces step-by-step plans without modifying code | read, search, list, tools, write_plan |
172
+
173
+ ---
174
+
175
+ ## Agent Tools
176
+
177
+ | Tool | What it does |
178
+ |------|-------------|
179
+ | `read_file` | Reads a file or specific line range (protected against path traversal) |
180
+ | `write_file` | Creates or overwrites a file in the workspace |
181
+ | `edit_file` | Replaces a specific string inside a file |
182
+ | `edit_file_multi` | Applies multiple non-contiguous edits to a file in one call |
183
+ | `shell_exec` | Executes a shell command in the project directory |
184
+ | `list_dir` | Lists directory contents |
185
+ | `grep_search` | Ripgrep-style search across the codebase |
186
+ | `find_files` | Find files matching a glob pattern |
187
+ | `write_plan` | Creates a step-by-step plan for approval |
188
+ | `create_todo` | Creates a todo item |
189
+ | `update_todo` | Updates a todo status (active / done / failed) |
190
+ | `list_todos` | Shows active todos and progress |
191
+ | `list_tools` | Discovers connected MCP servers and lazy-loaded plugins |
192
+ | `web_search` | Searches the internet for up-to-date documentation and fixes |
193
+ | `fetch_url` | Downloads and converts a webpage to readable markdown |
194
+
195
+ In `SAFE` mode (default), all write, edit, and shell operations require explicit user approval.
196
+
197
+ ---
198
+
199
+ ## Chat Commands
200
+
201
+ Type these directly in the chat bar to manage the agent and session:
202
+
203
+ | Command | Description |
204
+ |---------|-------------|
205
+ | `/model` | Switch provider & model (or **Ctrl+L**) |
206
+ | `/profile [name]` | Switch profile (`builder`/`reviewer`/`planner`) (or **Ctrl+J**) |
207
+ | `/mode [safe\|trust\|full\|yolo]` | Set permission mode for file/shell approvals |
208
+ | `/undo` | Undo the last prompt and revert all file changes |
209
+ | `/mcp` | Show MCP server status and available tools |
210
+ | `/sessions` | Browse and switch sessions (or **Ctrl+O**) |
211
+ | `/new` | Start a new session |
212
+ | `/rename <name>` | Rename the current session |
213
+ | `/compact` | Summarize & compress old context to free up token space |
214
+ | `/settings` | Open the master settings panel (or **Ctrl+E**) |
215
+ | `/keys` | View status of all provider API keys |
216
+ | `/keys set <prov> <key>` | Save an API key securely to your universal config |
217
+ | `/trust` | Trust the current folder (enables file writes + shell) |
218
+ | `/untrust` | Remove trust for the current folder |
219
+ | `/dry-run` | Toggle dry-run mode (simulates tools without writing/running) |
220
+ | `/debug` | Toggle debug mode (shows tool calls inline) |
221
+ | `/logs` | Display log file location and trailing instructions |
222
+ | `/cron` | Open the background task scheduler |
223
+ | `/plan clear` | Clear the active session plan |
224
+ | `/clear` | Clear the chat history |
225
+
226
+ ---
227
+
228
+ ## Modes & Permissions
229
+
230
+ | Mode | Plan Required? | Plan Gate | Batch Review |
231
+ |------|---------------|-----------|--------------|
232
+ | **SAFE** (default) | Yes (for complex) | 🔴 User must approve | 🔴 Blocking overlay |
233
+ | **TRUST** | Yes (for complex) | 🔴 User must approve | 🔴 Blocking overlay |
234
+ | **FULL** | Yes (for complex) | ✅ Auto-approved | 🟡 Non-blocking toast |
235
+ | **YOLO** | Yes (shown as FYI) | ✅ Auto-approved | ✅ Silent |
236
+
237
+ ---
238
+
239
+ ## Background Tasks (Cron)
240
+
241
+ Andromity features a built-in background task scheduler that runs directly in your TUI. You can schedule the AI to monitor logs, run tests, or check endpoints automatically on a timer.
242
+
243
+ **Usage:**
244
+ - Type `/cron` in the chat to open the Cron Manager.
245
+ - Add a new job with a schedule like `every 30m`, `every 2h`, or `every 1d`.
246
+ - Assign it a specific model, permission mode (e.g., `yolo` for autonomous background execution), and prompt.
247
+ - Background tasks run asynchronously and only interrupt you if they fail or require attention.
248
+
249
+ Jobs are stored locally in your project at `.andromity/crons.json`.
250
+
251
+ ---
252
+
253
+ ## MCP (Model Context Protocol) Support
254
+
255
+ Andromity supports [MCP](https://modelcontextprotocol.io/) to connect external tools and APIs natively.
256
+
257
+ **Smart Lazy-Loading**: MCP tool schemas are injected into the system prompt as a compact index and loaded fully only when the LLM requests them — preventing token exhaustion with 50+ tools connected.
258
+
259
+ **Usage:**
260
+ - Configure servers in `.andromity/mcp.json` or `.vscode/mcp.json`.
261
+ - Type `/mcp` in the chat to view connected servers and available tools.
262
+
263
+ ---
264
+
265
+ ## Sound Notifications
266
+
267
+ Andromity plays a sound when:
268
+ - **Attention needed** — the AI is paused waiting for you to approve or reject a tool call.
269
+ - **Response done** — the AI has finished its full response turn.
270
+
271
+ Configure under **Ctrl+E → Advanced → Sounds**. Both sounds can be toggled independently.
272
+
273
+ ---
274
+
275
+ ## 🔒 Privacy & Telemetry
276
+
277
+ Andromity collects an **anonymous ping on first launch and session start**. We never collect file paths, code, API keys, or personally identifiable information (like emails or usernames).
278
+
279
+ For full details on exactly what is collected and how it is processed, see the [Telemetry Privacy Policy](telemetry-worker/README.md).
280
+
281
+ **Opt-out:**
282
+ 1. **Ctrl+E → Advanced → Telemetry** toggle in the TUI
283
+ 2. `export DO_NOT_TRACK=1`
284
+ 3. Set `telemetry = false` in `~/.andromity/config.toml`
285
+
286
+ ---
287
+
288
+ ## 📁 Data & Logs Location
289
+
290
+ All local configuration, session history, and logs are stored locally on your machine.
291
+
292
+ **Default Location:**
293
+ ```bash
294
+ # macOS / Linux
295
+ ~/.andromity/
296
+
297
+ # Windows
298
+ %APPDATA%\andromity\
299
+ ```
300
+
301
+ **⚠️ Windows Store Python Users:**
302
+ If you installed Python via the Microsoft Store, Windows heavily virtualizes application data. Your files will NOT be in the standard `%APPDATA%` directory. Instead, you can find your `config.toml`, logs, and sessions at:
303
+ ```bash
304
+ %LOCALAPPDATA%\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\Roaming\andromity\
305
+ ```
306
+ *(Note: The exact path changes slightly depending on your Python version, e.g., `Python.3.11...` or `Python.3.13...`)*
307
+
308
+ ---
309
+
310
+ ## Project Structure
311
+
312
+ ```
313
+ src/andromity/
314
+ ├── cli.py # CLI commands (run, tui)
315
+ ├── config.py # Configuration and trust management
316
+ ├── assets/
317
+ │ └── sounds/ # Bundled notification sounds
318
+ ├── core/
319
+ │ ├── agent.py # Main agent execution loop and streaming
320
+ │ ├── audio.py # Cross-platform sound notifications
321
+ │ ├── profiles.py # AI profiles and dynamic system prompt builder
322
+ │ ├── tools.py # Core tool implementations with safety guards
323
+ │ ├── provider.py # LiteLLM client wrapper
324
+ │ ├── session.py # Session persistence and token tracking
325
+ │ ├── models.py # Model catalog and context limits
326
+ │ ├── git_ops.py # Git snapshots and rollback operations
327
+ │ └── cron.py # Project-level background task scheduler
328
+ └── tui/
329
+ ├── app.py # Textual-based interactive UI
330
+ ├── footer.py # Input bar and status bar
331
+ ├── panels/
332
+ │ ├── chat.py # Message history and markdown rendering
333
+ │ ├── diff.py # Side-by-side diffs and tool approval dialogs
334
+ │ └── plan.py # Real-time plan tracking and todo list
335
+ └── overlays/
336
+ ├── settings.py # Settings UI (model, profiles, MCP, advanced)
337
+ ├── model.py # Model picker overlay
338
+ └── profile.py # Profile picker overlay
339
+ ```
340
+
341
+ ---
342
+
343
+ ## Development Setup
344
+
345
+ Clone the repo and install in editable mode — changes to source files take effect immediately without reinstalling:
346
+
347
+ ```bash
348
+ git clone https://github.com/agenticmarket/andromity
349
+ cd andromity
350
+ pip install -e ".[dev]"
351
+ andromity
352
+ ```
353
+
354
+ **Run tests:**
355
+ ```bash
356
+ pytest tests
357
+ ```
358
+
359
+ **Project layout follows `src/` layout** — all source lives under `src/andromity/`.
360
+
361
+ ---
362
+
363
+ ## Known Issues
364
+
365
+ | Issue | Workaround |
366
+ |-------|-----------|
367
+ | Context window overflow at high token counts | Use `/new` to start a fresh session |
368
+ | Session files stored in plaintext at `~/.andromity/sessions/` | Do not use on shared machines with sensitive codebases |
369
+ | Cron jobs in `.andromity/crons.json` auto-load from project directory | Review via `/cron` before trusting a cloned repo |
370
+
371
+ ---
372
+
373
+ ## Contributing
374
+
375
+ Open an issue or PR. Bug reports and honest feedback are more useful than feature requests at this stage.
376
+
377
+ ---
378
+
379
+ ## License
380
+
381
+ MIT — see [LICENSE](LICENSE).