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.
- andromity-0.1.0/LICENSE +21 -0
- andromity-0.1.0/PKG-INFO +381 -0
- andromity-0.1.0/README.md +340 -0
- andromity-0.1.0/pyproject.toml +63 -0
- andromity-0.1.0/setup.cfg +4 -0
- andromity-0.1.0/src/andromity/__init__.py +2 -0
- andromity-0.1.0/src/andromity/assets/sounds/done.wav +0 -0
- andromity-0.1.0/src/andromity/cli.py +73 -0
- andromity-0.1.0/src/andromity/config.py +316 -0
- andromity-0.1.0/src/andromity/core/__init__.py +1 -0
- andromity-0.1.0/src/andromity/core/agent.py +211 -0
- andromity-0.1.0/src/andromity/core/audio.py +32 -0
- andromity-0.1.0/src/andromity/core/cron.py +324 -0
- andromity-0.1.0/src/andromity/core/debug_log.py +36 -0
- andromity-0.1.0/src/andromity/core/events.py +49 -0
- andromity-0.1.0/src/andromity/core/git_ops.py +186 -0
- andromity-0.1.0/src/andromity/core/mcp.py +636 -0
- andromity-0.1.0/src/andromity/core/models.py +428 -0
- andromity-0.1.0/src/andromity/core/oauth.py +454 -0
- andromity-0.1.0/src/andromity/core/planner.py +79 -0
- andromity-0.1.0/src/andromity/core/profiles.py +122 -0
- andromity-0.1.0/src/andromity/core/provider.py +188 -0
- andromity-0.1.0/src/andromity/core/search.py +345 -0
- andromity-0.1.0/src/andromity/core/security.py +64 -0
- andromity-0.1.0/src/andromity/core/session.py +169 -0
- andromity-0.1.0/src/andromity/core/todo.py +97 -0
- andromity-0.1.0/src/andromity/core/tools.py +1091 -0
- andromity-0.1.0/src/andromity/core/web.py +170 -0
- andromity-0.1.0/src/andromity/telemetry.py +102 -0
- andromity-0.1.0/src/andromity/tui/__init__.py +1 -0
- andromity-0.1.0/src/andromity/tui/app.py +1570 -0
- andromity-0.1.0/src/andromity/tui/footer.py +456 -0
- andromity-0.1.0/src/andromity/tui/markup_utils.py +26 -0
- andromity-0.1.0/src/andromity/tui/overlays/__init__.py +1 -0
- andromity-0.1.0/src/andromity/tui/overlays/batch_review.py +141 -0
- andromity-0.1.0/src/andromity/tui/overlays/cron.py +452 -0
- andromity-0.1.0/src/andromity/tui/overlays/model.py +305 -0
- andromity-0.1.0/src/andromity/tui/overlays/profile.py +109 -0
- andromity-0.1.0/src/andromity/tui/overlays/session.py +143 -0
- andromity-0.1.0/src/andromity/tui/overlays/settings.py +1061 -0
- andromity-0.1.0/src/andromity/tui/overlays/trust.py +60 -0
- andromity-0.1.0/src/andromity/tui/overlays/undo.py +77 -0
- andromity-0.1.0/src/andromity/tui/panels/__init__.py +1 -0
- andromity-0.1.0/src/andromity/tui/panels/chat.py +446 -0
- andromity-0.1.0/src/andromity/tui/panels/diff.py +613 -0
- andromity-0.1.0/src/andromity/tui/panels/filetree.py +306 -0
- andromity-0.1.0/src/andromity/tui/panels/plan.py +152 -0
- andromity-0.1.0/src/andromity.egg-info/PKG-INFO +381 -0
- andromity-0.1.0/src/andromity.egg-info/SOURCES.txt +65 -0
- andromity-0.1.0/src/andromity.egg-info/dependency_links.txt +1 -0
- andromity-0.1.0/src/andromity.egg-info/entry_points.txt +2 -0
- andromity-0.1.0/src/andromity.egg-info/requires.txt +19 -0
- andromity-0.1.0/src/andromity.egg-info/top_level.txt +1 -0
- andromity-0.1.0/tests/test_agent.py +68 -0
- andromity-0.1.0/tests/test_config.py +93 -0
- andromity-0.1.0/tests/test_events.py +41 -0
- andromity-0.1.0/tests/test_git.py +51 -0
- andromity-0.1.0/tests/test_mcp.py +276 -0
- andromity-0.1.0/tests/test_permissions.py +95 -0
- andromity-0.1.0/tests/test_planner.py +120 -0
- andromity-0.1.0/tests/test_profiles.py +46 -0
- andromity-0.1.0/tests/test_search.py +165 -0
- andromity-0.1.0/tests/test_session.py +85 -0
- andromity-0.1.0/tests/test_todo.py +100 -0
- andromity-0.1.0/tests/test_tools.py +402 -0
- andromity-0.1.0/tests/test_undo.py +33 -0
- andromity-0.1.0/tests/test_web.py +55 -0
andromity-0.1.0/LICENSE
ADDED
|
@@ -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.
|
andromity-0.1.0/PKG-INFO
ADDED
|
@@ -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
|
+

|
|
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).
|