novacode-tui 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.
- novacode_tui-0.1.0/LICENSE +21 -0
- novacode_tui-0.1.0/PKG-INFO +253 -0
- novacode_tui-0.1.0/README.md +218 -0
- novacode_tui-0.1.0/novacode_tui.egg-info/PKG-INFO +253 -0
- novacode_tui-0.1.0/novacode_tui.egg-info/SOURCES.txt +10 -0
- novacode_tui-0.1.0/novacode_tui.egg-info/dependency_links.txt +1 -0
- novacode_tui-0.1.0/novacode_tui.egg-info/entry_points.txt +3 -0
- novacode_tui-0.1.0/novacode_tui.egg-info/requires.txt +14 -0
- novacode_tui-0.1.0/novacode_tui.egg-info/top_level.txt +1 -0
- novacode_tui-0.1.0/pyproject.toml +56 -0
- novacode_tui-0.1.0/setup.cfg +4 -0
- novacode_tui-0.1.0/setup.py +4 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 NovaCode
|
|
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,253 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: novacode-tui
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: The most powerful TUI AI Coding Agent — surpasses Claude Code & OpenCode with NVIDIA NIM, multi-key rotation, KIMI K2.6 & DeepSeek V4 Pro support
|
|
5
|
+
Author: NovaCode Team
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: ai,coding,agent,tui,nvidia-nim,claude-code-alternative
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Environment :: Console
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
17
|
+
Classifier: Topic :: Software Development :: Debuggers
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: textual>=1.0.0
|
|
22
|
+
Requires-Dist: httpx>=0.27.0
|
|
23
|
+
Requires-Dist: httpx-sse>=0.4.0
|
|
24
|
+
Requires-Dist: rich>=13.7.0
|
|
25
|
+
Requires-Dist: pyyaml>=6.0
|
|
26
|
+
Requires-Dist: click>=8.1.0
|
|
27
|
+
Requires-Dist: pathspec>=0.12.0
|
|
28
|
+
Requires-Dist: platformdirs>=4.0.0
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
31
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
32
|
+
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
33
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
|
|
36
|
+
# NovaCode ⚡
|
|
37
|
+
|
|
38
|
+
**The most powerful TUI AI Coding Agent — surpasses Claude Code and OpenCode.**
|
|
39
|
+
|
|
40
|
+
[](https://pypi.org/project/novacode-tui/)
|
|
41
|
+
[](https://www.npmjs.com/package/novacode-tui)
|
|
42
|
+
[](https://python.org)
|
|
43
|
+
[](LICENSE)
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
╔══════════════════════════════════════════╗
|
|
47
|
+
║ NovaCode — AI Coding Agent ║
|
|
48
|
+
║ More powerful than Claude Code ✨ ║
|
|
49
|
+
╚══════════════════════════════════════════╝
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## ✨ What makes NovaCode special?
|
|
55
|
+
|
|
56
|
+
| Feature | NovaCode | Claude Code | OpenCode |
|
|
57
|
+
|---------|----------|-------------|----------|
|
|
58
|
+
| **Multi-key rotation** | ✅ Auto-failover | ❌ | ❌ |
|
|
59
|
+
| **NVIDIA NIM** | ✅ Native | ❌ | ❌ |
|
|
60
|
+
| **KIMI K2.6 via NIM** | ✅ No separate key | ❌ | ❌ |
|
|
61
|
+
| **DeepSeek V4 Pro streaming** | ✅ True SSE streaming | ❌ | ❌ |
|
|
62
|
+
| **Agentic tool loop** | ✅ Parallel execution | ✅ Sequential | ✅ Sequential |
|
|
63
|
+
| **Web search** | ✅ Built-in | ❌ | ❌ |
|
|
64
|
+
| **Context windowing** | ✅ Smart | ✅ | ✅ |
|
|
65
|
+
| **Plan/Build modes** | ✅ | ✅ | ✅ |
|
|
66
|
+
| **File tree sidebar** | ✅ Coming | ❌ | ❌ |
|
|
67
|
+
| **Token tracking** | ✅ Real-time | ✅ | ❌ |
|
|
68
|
+
|
|
69
|
+
## 🚀 Quick Start
|
|
70
|
+
|
|
71
|
+
### Install via pip (recommended)
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install novacode-tui
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Install via npm
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npm install -g novacode-tui
|
|
81
|
+
# npm wrapper will detect Python and prompt to install the Python package
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Install from source
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
git clone https://github.com/novacode-ai/novacode.git
|
|
88
|
+
cd novacode
|
|
89
|
+
pip install -e .
|
|
90
|
+
# Or via npm:
|
|
91
|
+
npm link ./npm
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 🔑 Configuration
|
|
95
|
+
|
|
96
|
+
### 1. Add NVIDIA NIM API Keys
|
|
97
|
+
|
|
98
|
+
Get free NIM keys from [build.nvidia.com](https://build.nvidia.com/):
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
novacode keys add
|
|
102
|
+
# Paste your NVIDIA NIM API key
|
|
103
|
+
|
|
104
|
+
# Add multiple keys for auto-rotation:
|
|
105
|
+
novacode keys add
|
|
106
|
+
novacode keys add
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 2. Add NIM API keys (same keys used for all models, including KIMI K2.6)
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Add as many keys as you want — NovaCode auto-rotates
|
|
113
|
+
novacode keys add
|
|
114
|
+
# Paste your NVIDIA NIM API key
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 3. List configured keys
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
novacode keys list
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 🎮 Usage
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Launch the TUI (interactive chat)
|
|
127
|
+
novacode
|
|
128
|
+
|
|
129
|
+
# Use a specific model
|
|
130
|
+
novacode --model moonshotai/kimi-k2.6
|
|
131
|
+
novacode --model deepseek/deepseek-v4-pro
|
|
132
|
+
|
|
133
|
+
# Send a one-off message (non-TUI)
|
|
134
|
+
novacode chat "refactor this code to use async/await"
|
|
135
|
+
|
|
136
|
+
# List available models
|
|
137
|
+
novacode models
|
|
138
|
+
|
|
139
|
+
# Edit configuration
|
|
140
|
+
novacode config
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### TUI Keyboard Shortcuts
|
|
144
|
+
|
|
145
|
+
| Key | Action |
|
|
146
|
+
|-----|--------|
|
|
147
|
+
| `Ctrl+C` | Quit |
|
|
148
|
+
| `Ctrl+L` | Clear chat |
|
|
149
|
+
| `Ctrl+N` | New session |
|
|
150
|
+
| `Ctrl+S` | Focus input |
|
|
151
|
+
| `Ctrl+A` | Toggle auto-approve |
|
|
152
|
+
| `Esc` | Focus input |
|
|
153
|
+
|
|
154
|
+
## 🤖 Supported Models
|
|
155
|
+
|
|
156
|
+
| Model ID | Description |
|
|
157
|
+
|----------|-------------|
|
|
158
|
+
| `nvidia/llama-3.3-nemotron-super-49b` | NVIDIA's best — speed + quality |
|
|
159
|
+
| `moonshotai/kimi-k2.6` | KIMI K2.6 thinking model (served via NVIDIA NIM) |
|
|
160
|
+
| `deepseek/deepseek-v4-pro` | DeepSeek V4 Pro with true reasoning streaming |
|
|
161
|
+
| `nvidia/llama-3.1-8b-instruct` | Fast, lightweight |
|
|
162
|
+
|
|
163
|
+
### Model-specific behavior
|
|
164
|
+
|
|
165
|
+
- **KIMI K2.6**: Served via NVIDIA NIM (uses the same NIM keys). Thinking mode requires `temperature=1.0`, non-thinking requires `0.6`. No `tool_choice: "required"`.
|
|
166
|
+
- **DeepSeek V4 Pro**: Uses `reasoning_content` field for CoT streaming (no chunked dump). Can disable thinking via config.
|
|
167
|
+
|
|
168
|
+
## 🛠 Agentic Capabilities
|
|
169
|
+
|
|
170
|
+
NovaCode includes a powerful suite of tools:
|
|
171
|
+
|
|
172
|
+
| Tool | Description | Auto-confirm |
|
|
173
|
+
|------|-------------|:---:|
|
|
174
|
+
| `read` | Read file contents with line offsets | ✅ |
|
|
175
|
+
| `write` | Write content to files | ❌ |
|
|
176
|
+
| `edit` | Targeted find-and-replace edits | ❌ |
|
|
177
|
+
| `search` | Regex codebase search | ✅ |
|
|
178
|
+
| `bash` | Execute shell commands | ❌ |
|
|
179
|
+
| `list_dir` | List directory contents | ✅ |
|
|
180
|
+
| `glob` | Find files by glob pattern | ✅ |
|
|
181
|
+
| `file_info` | Get file metadata | ✅ |
|
|
182
|
+
| `web_search` | Search the web | ✅ |
|
|
183
|
+
|
|
184
|
+
## 🔄 Multi-Key Rotation
|
|
185
|
+
|
|
186
|
+
NovaCode's key rotation system automatically:
|
|
187
|
+
|
|
188
|
+
- **Round-robins** through available NIM keys
|
|
189
|
+
- **Detects 429 rate limits** and moves to the next key
|
|
190
|
+
- **Cooldowns** rate-limited keys for configurable intervals
|
|
191
|
+
- **Resets** expired cooldowns automatically
|
|
192
|
+
- **Tracks usage** per key (uses least-used strategy when configured)
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Configure strategy
|
|
196
|
+
novacode config # Edit rotation_strategy: "round-robin" or "least-used"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## 🧠 Architecture
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
novacode/
|
|
203
|
+
├── __main__.py # CLI entry point (click)
|
|
204
|
+
├── config.py # JSON config, multi-key, multi-model
|
|
205
|
+
├── client/
|
|
206
|
+
│ ├── nim.py # NVIDIA NIM + OpenAI-compatible client
|
|
207
|
+
│ └── rotation.py # Multi-key rotation engine
|
|
208
|
+
├── agent/
|
|
209
|
+
│ ├── engine.py # Tool execution loop
|
|
210
|
+
│ ├── tools.py # Tool definitions (9 built-in tools)
|
|
211
|
+
│ └── context.py # Token-aware context windowing
|
|
212
|
+
├── ui/
|
|
213
|
+
│ └── app.py # Textual TUI application
|
|
214
|
+
├── models/
|
|
215
|
+
│ └── ... # Model definitions & configs
|
|
216
|
+
└── utils/
|
|
217
|
+
└── helpers.py # Utility functions
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## 📦 Development
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
git clone https://github.com/novacode-ai/novacode.git
|
|
224
|
+
cd novacode
|
|
225
|
+
pip install -e ".[dev]"
|
|
226
|
+
|
|
227
|
+
# Run tests
|
|
228
|
+
pytest
|
|
229
|
+
|
|
230
|
+
# Type check
|
|
231
|
+
mypy src/novacode
|
|
232
|
+
|
|
233
|
+
# Lint
|
|
234
|
+
ruff check src/novacode
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## 🌟 Roadmap
|
|
238
|
+
|
|
239
|
+
- [ ] LSP integration for context-aware code understanding
|
|
240
|
+
- [ ] Multi-session management
|
|
241
|
+
- [ ] Custom tool creation DSL
|
|
242
|
+
- [ ] Project-level memory & patterns
|
|
243
|
+
- [ ] VSCode / JetBrains extension
|
|
244
|
+
- [ ] Local model support (Ollama, llama.cpp)
|
|
245
|
+
- [ ] Collaborative sessions
|
|
246
|
+
|
|
247
|
+
## 📄 License
|
|
248
|
+
|
|
249
|
+
MIT License — see [LICENSE](LICENSE)
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
> **NovaCode** — Because your code deserves the best agent.
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# NovaCode ⚡
|
|
2
|
+
|
|
3
|
+
**The most powerful TUI AI Coding Agent — surpasses Claude Code and OpenCode.**
|
|
4
|
+
|
|
5
|
+
[](https://pypi.org/project/novacode-tui/)
|
|
6
|
+
[](https://www.npmjs.com/package/novacode-tui)
|
|
7
|
+
[](https://python.org)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
╔══════════════════════════════════════════╗
|
|
12
|
+
║ NovaCode — AI Coding Agent ║
|
|
13
|
+
║ More powerful than Claude Code ✨ ║
|
|
14
|
+
╚══════════════════════════════════════════╝
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## ✨ What makes NovaCode special?
|
|
20
|
+
|
|
21
|
+
| Feature | NovaCode | Claude Code | OpenCode |
|
|
22
|
+
|---------|----------|-------------|----------|
|
|
23
|
+
| **Multi-key rotation** | ✅ Auto-failover | ❌ | ❌ |
|
|
24
|
+
| **NVIDIA NIM** | ✅ Native | ❌ | ❌ |
|
|
25
|
+
| **KIMI K2.6 via NIM** | ✅ No separate key | ❌ | ❌ |
|
|
26
|
+
| **DeepSeek V4 Pro streaming** | ✅ True SSE streaming | ❌ | ❌ |
|
|
27
|
+
| **Agentic tool loop** | ✅ Parallel execution | ✅ Sequential | ✅ Sequential |
|
|
28
|
+
| **Web search** | ✅ Built-in | ❌ | ❌ |
|
|
29
|
+
| **Context windowing** | ✅ Smart | ✅ | ✅ |
|
|
30
|
+
| **Plan/Build modes** | ✅ | ✅ | ✅ |
|
|
31
|
+
| **File tree sidebar** | ✅ Coming | ❌ | ❌ |
|
|
32
|
+
| **Token tracking** | ✅ Real-time | ✅ | ❌ |
|
|
33
|
+
|
|
34
|
+
## 🚀 Quick Start
|
|
35
|
+
|
|
36
|
+
### Install via pip (recommended)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pip install novacode-tui
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Install via npm
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npm install -g novacode-tui
|
|
46
|
+
# npm wrapper will detect Python and prompt to install the Python package
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Install from source
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
git clone https://github.com/novacode-ai/novacode.git
|
|
53
|
+
cd novacode
|
|
54
|
+
pip install -e .
|
|
55
|
+
# Or via npm:
|
|
56
|
+
npm link ./npm
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 🔑 Configuration
|
|
60
|
+
|
|
61
|
+
### 1. Add NVIDIA NIM API Keys
|
|
62
|
+
|
|
63
|
+
Get free NIM keys from [build.nvidia.com](https://build.nvidia.com/):
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
novacode keys add
|
|
67
|
+
# Paste your NVIDIA NIM API key
|
|
68
|
+
|
|
69
|
+
# Add multiple keys for auto-rotation:
|
|
70
|
+
novacode keys add
|
|
71
|
+
novacode keys add
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 2. Add NIM API keys (same keys used for all models, including KIMI K2.6)
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Add as many keys as you want — NovaCode auto-rotates
|
|
78
|
+
novacode keys add
|
|
79
|
+
# Paste your NVIDIA NIM API key
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. List configured keys
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
novacode keys list
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 🎮 Usage
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Launch the TUI (interactive chat)
|
|
92
|
+
novacode
|
|
93
|
+
|
|
94
|
+
# Use a specific model
|
|
95
|
+
novacode --model moonshotai/kimi-k2.6
|
|
96
|
+
novacode --model deepseek/deepseek-v4-pro
|
|
97
|
+
|
|
98
|
+
# Send a one-off message (non-TUI)
|
|
99
|
+
novacode chat "refactor this code to use async/await"
|
|
100
|
+
|
|
101
|
+
# List available models
|
|
102
|
+
novacode models
|
|
103
|
+
|
|
104
|
+
# Edit configuration
|
|
105
|
+
novacode config
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### TUI Keyboard Shortcuts
|
|
109
|
+
|
|
110
|
+
| Key | Action |
|
|
111
|
+
|-----|--------|
|
|
112
|
+
| `Ctrl+C` | Quit |
|
|
113
|
+
| `Ctrl+L` | Clear chat |
|
|
114
|
+
| `Ctrl+N` | New session |
|
|
115
|
+
| `Ctrl+S` | Focus input |
|
|
116
|
+
| `Ctrl+A` | Toggle auto-approve |
|
|
117
|
+
| `Esc` | Focus input |
|
|
118
|
+
|
|
119
|
+
## 🤖 Supported Models
|
|
120
|
+
|
|
121
|
+
| Model ID | Description |
|
|
122
|
+
|----------|-------------|
|
|
123
|
+
| `nvidia/llama-3.3-nemotron-super-49b` | NVIDIA's best — speed + quality |
|
|
124
|
+
| `moonshotai/kimi-k2.6` | KIMI K2.6 thinking model (served via NVIDIA NIM) |
|
|
125
|
+
| `deepseek/deepseek-v4-pro` | DeepSeek V4 Pro with true reasoning streaming |
|
|
126
|
+
| `nvidia/llama-3.1-8b-instruct` | Fast, lightweight |
|
|
127
|
+
|
|
128
|
+
### Model-specific behavior
|
|
129
|
+
|
|
130
|
+
- **KIMI K2.6**: Served via NVIDIA NIM (uses the same NIM keys). Thinking mode requires `temperature=1.0`, non-thinking requires `0.6`. No `tool_choice: "required"`.
|
|
131
|
+
- **DeepSeek V4 Pro**: Uses `reasoning_content` field for CoT streaming (no chunked dump). Can disable thinking via config.
|
|
132
|
+
|
|
133
|
+
## 🛠 Agentic Capabilities
|
|
134
|
+
|
|
135
|
+
NovaCode includes a powerful suite of tools:
|
|
136
|
+
|
|
137
|
+
| Tool | Description | Auto-confirm |
|
|
138
|
+
|------|-------------|:---:|
|
|
139
|
+
| `read` | Read file contents with line offsets | ✅ |
|
|
140
|
+
| `write` | Write content to files | ❌ |
|
|
141
|
+
| `edit` | Targeted find-and-replace edits | ❌ |
|
|
142
|
+
| `search` | Regex codebase search | ✅ |
|
|
143
|
+
| `bash` | Execute shell commands | ❌ |
|
|
144
|
+
| `list_dir` | List directory contents | ✅ |
|
|
145
|
+
| `glob` | Find files by glob pattern | ✅ |
|
|
146
|
+
| `file_info` | Get file metadata | ✅ |
|
|
147
|
+
| `web_search` | Search the web | ✅ |
|
|
148
|
+
|
|
149
|
+
## 🔄 Multi-Key Rotation
|
|
150
|
+
|
|
151
|
+
NovaCode's key rotation system automatically:
|
|
152
|
+
|
|
153
|
+
- **Round-robins** through available NIM keys
|
|
154
|
+
- **Detects 429 rate limits** and moves to the next key
|
|
155
|
+
- **Cooldowns** rate-limited keys for configurable intervals
|
|
156
|
+
- **Resets** expired cooldowns automatically
|
|
157
|
+
- **Tracks usage** per key (uses least-used strategy when configured)
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Configure strategy
|
|
161
|
+
novacode config # Edit rotation_strategy: "round-robin" or "least-used"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## 🧠 Architecture
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
novacode/
|
|
168
|
+
├── __main__.py # CLI entry point (click)
|
|
169
|
+
├── config.py # JSON config, multi-key, multi-model
|
|
170
|
+
├── client/
|
|
171
|
+
│ ├── nim.py # NVIDIA NIM + OpenAI-compatible client
|
|
172
|
+
│ └── rotation.py # Multi-key rotation engine
|
|
173
|
+
├── agent/
|
|
174
|
+
│ ├── engine.py # Tool execution loop
|
|
175
|
+
│ ├── tools.py # Tool definitions (9 built-in tools)
|
|
176
|
+
│ └── context.py # Token-aware context windowing
|
|
177
|
+
├── ui/
|
|
178
|
+
│ └── app.py # Textual TUI application
|
|
179
|
+
├── models/
|
|
180
|
+
│ └── ... # Model definitions & configs
|
|
181
|
+
└── utils/
|
|
182
|
+
└── helpers.py # Utility functions
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## 📦 Development
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
git clone https://github.com/novacode-ai/novacode.git
|
|
189
|
+
cd novacode
|
|
190
|
+
pip install -e ".[dev]"
|
|
191
|
+
|
|
192
|
+
# Run tests
|
|
193
|
+
pytest
|
|
194
|
+
|
|
195
|
+
# Type check
|
|
196
|
+
mypy src/novacode
|
|
197
|
+
|
|
198
|
+
# Lint
|
|
199
|
+
ruff check src/novacode
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## 🌟 Roadmap
|
|
203
|
+
|
|
204
|
+
- [ ] LSP integration for context-aware code understanding
|
|
205
|
+
- [ ] Multi-session management
|
|
206
|
+
- [ ] Custom tool creation DSL
|
|
207
|
+
- [ ] Project-level memory & patterns
|
|
208
|
+
- [ ] VSCode / JetBrains extension
|
|
209
|
+
- [ ] Local model support (Ollama, llama.cpp)
|
|
210
|
+
- [ ] Collaborative sessions
|
|
211
|
+
|
|
212
|
+
## 📄 License
|
|
213
|
+
|
|
214
|
+
MIT License — see [LICENSE](LICENSE)
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
> **NovaCode** — Because your code deserves the best agent.
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: novacode-tui
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: The most powerful TUI AI Coding Agent — surpasses Claude Code & OpenCode with NVIDIA NIM, multi-key rotation, KIMI K2.6 & DeepSeek V4 Pro support
|
|
5
|
+
Author: NovaCode Team
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: ai,coding,agent,tui,nvidia-nim,claude-code-alternative
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Environment :: Console
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
17
|
+
Classifier: Topic :: Software Development :: Debuggers
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: textual>=1.0.0
|
|
22
|
+
Requires-Dist: httpx>=0.27.0
|
|
23
|
+
Requires-Dist: httpx-sse>=0.4.0
|
|
24
|
+
Requires-Dist: rich>=13.7.0
|
|
25
|
+
Requires-Dist: pyyaml>=6.0
|
|
26
|
+
Requires-Dist: click>=8.1.0
|
|
27
|
+
Requires-Dist: pathspec>=0.12.0
|
|
28
|
+
Requires-Dist: platformdirs>=4.0.0
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
31
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
32
|
+
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
33
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
|
|
36
|
+
# NovaCode ⚡
|
|
37
|
+
|
|
38
|
+
**The most powerful TUI AI Coding Agent — surpasses Claude Code and OpenCode.**
|
|
39
|
+
|
|
40
|
+
[](https://pypi.org/project/novacode-tui/)
|
|
41
|
+
[](https://www.npmjs.com/package/novacode-tui)
|
|
42
|
+
[](https://python.org)
|
|
43
|
+
[](LICENSE)
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
╔══════════════════════════════════════════╗
|
|
47
|
+
║ NovaCode — AI Coding Agent ║
|
|
48
|
+
║ More powerful than Claude Code ✨ ║
|
|
49
|
+
╚══════════════════════════════════════════╝
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## ✨ What makes NovaCode special?
|
|
55
|
+
|
|
56
|
+
| Feature | NovaCode | Claude Code | OpenCode |
|
|
57
|
+
|---------|----------|-------------|----------|
|
|
58
|
+
| **Multi-key rotation** | ✅ Auto-failover | ❌ | ❌ |
|
|
59
|
+
| **NVIDIA NIM** | ✅ Native | ❌ | ❌ |
|
|
60
|
+
| **KIMI K2.6 via NIM** | ✅ No separate key | ❌ | ❌ |
|
|
61
|
+
| **DeepSeek V4 Pro streaming** | ✅ True SSE streaming | ❌ | ❌ |
|
|
62
|
+
| **Agentic tool loop** | ✅ Parallel execution | ✅ Sequential | ✅ Sequential |
|
|
63
|
+
| **Web search** | ✅ Built-in | ❌ | ❌ |
|
|
64
|
+
| **Context windowing** | ✅ Smart | ✅ | ✅ |
|
|
65
|
+
| **Plan/Build modes** | ✅ | ✅ | ✅ |
|
|
66
|
+
| **File tree sidebar** | ✅ Coming | ❌ | ❌ |
|
|
67
|
+
| **Token tracking** | ✅ Real-time | ✅ | ❌ |
|
|
68
|
+
|
|
69
|
+
## 🚀 Quick Start
|
|
70
|
+
|
|
71
|
+
### Install via pip (recommended)
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install novacode-tui
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Install via npm
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npm install -g novacode-tui
|
|
81
|
+
# npm wrapper will detect Python and prompt to install the Python package
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Install from source
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
git clone https://github.com/novacode-ai/novacode.git
|
|
88
|
+
cd novacode
|
|
89
|
+
pip install -e .
|
|
90
|
+
# Or via npm:
|
|
91
|
+
npm link ./npm
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 🔑 Configuration
|
|
95
|
+
|
|
96
|
+
### 1. Add NVIDIA NIM API Keys
|
|
97
|
+
|
|
98
|
+
Get free NIM keys from [build.nvidia.com](https://build.nvidia.com/):
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
novacode keys add
|
|
102
|
+
# Paste your NVIDIA NIM API key
|
|
103
|
+
|
|
104
|
+
# Add multiple keys for auto-rotation:
|
|
105
|
+
novacode keys add
|
|
106
|
+
novacode keys add
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 2. Add NIM API keys (same keys used for all models, including KIMI K2.6)
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Add as many keys as you want — NovaCode auto-rotates
|
|
113
|
+
novacode keys add
|
|
114
|
+
# Paste your NVIDIA NIM API key
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 3. List configured keys
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
novacode keys list
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 🎮 Usage
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Launch the TUI (interactive chat)
|
|
127
|
+
novacode
|
|
128
|
+
|
|
129
|
+
# Use a specific model
|
|
130
|
+
novacode --model moonshotai/kimi-k2.6
|
|
131
|
+
novacode --model deepseek/deepseek-v4-pro
|
|
132
|
+
|
|
133
|
+
# Send a one-off message (non-TUI)
|
|
134
|
+
novacode chat "refactor this code to use async/await"
|
|
135
|
+
|
|
136
|
+
# List available models
|
|
137
|
+
novacode models
|
|
138
|
+
|
|
139
|
+
# Edit configuration
|
|
140
|
+
novacode config
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### TUI Keyboard Shortcuts
|
|
144
|
+
|
|
145
|
+
| Key | Action |
|
|
146
|
+
|-----|--------|
|
|
147
|
+
| `Ctrl+C` | Quit |
|
|
148
|
+
| `Ctrl+L` | Clear chat |
|
|
149
|
+
| `Ctrl+N` | New session |
|
|
150
|
+
| `Ctrl+S` | Focus input |
|
|
151
|
+
| `Ctrl+A` | Toggle auto-approve |
|
|
152
|
+
| `Esc` | Focus input |
|
|
153
|
+
|
|
154
|
+
## 🤖 Supported Models
|
|
155
|
+
|
|
156
|
+
| Model ID | Description |
|
|
157
|
+
|----------|-------------|
|
|
158
|
+
| `nvidia/llama-3.3-nemotron-super-49b` | NVIDIA's best — speed + quality |
|
|
159
|
+
| `moonshotai/kimi-k2.6` | KIMI K2.6 thinking model (served via NVIDIA NIM) |
|
|
160
|
+
| `deepseek/deepseek-v4-pro` | DeepSeek V4 Pro with true reasoning streaming |
|
|
161
|
+
| `nvidia/llama-3.1-8b-instruct` | Fast, lightweight |
|
|
162
|
+
|
|
163
|
+
### Model-specific behavior
|
|
164
|
+
|
|
165
|
+
- **KIMI K2.6**: Served via NVIDIA NIM (uses the same NIM keys). Thinking mode requires `temperature=1.0`, non-thinking requires `0.6`. No `tool_choice: "required"`.
|
|
166
|
+
- **DeepSeek V4 Pro**: Uses `reasoning_content` field for CoT streaming (no chunked dump). Can disable thinking via config.
|
|
167
|
+
|
|
168
|
+
## 🛠 Agentic Capabilities
|
|
169
|
+
|
|
170
|
+
NovaCode includes a powerful suite of tools:
|
|
171
|
+
|
|
172
|
+
| Tool | Description | Auto-confirm |
|
|
173
|
+
|------|-------------|:---:|
|
|
174
|
+
| `read` | Read file contents with line offsets | ✅ |
|
|
175
|
+
| `write` | Write content to files | ❌ |
|
|
176
|
+
| `edit` | Targeted find-and-replace edits | ❌ |
|
|
177
|
+
| `search` | Regex codebase search | ✅ |
|
|
178
|
+
| `bash` | Execute shell commands | ❌ |
|
|
179
|
+
| `list_dir` | List directory contents | ✅ |
|
|
180
|
+
| `glob` | Find files by glob pattern | ✅ |
|
|
181
|
+
| `file_info` | Get file metadata | ✅ |
|
|
182
|
+
| `web_search` | Search the web | ✅ |
|
|
183
|
+
|
|
184
|
+
## 🔄 Multi-Key Rotation
|
|
185
|
+
|
|
186
|
+
NovaCode's key rotation system automatically:
|
|
187
|
+
|
|
188
|
+
- **Round-robins** through available NIM keys
|
|
189
|
+
- **Detects 429 rate limits** and moves to the next key
|
|
190
|
+
- **Cooldowns** rate-limited keys for configurable intervals
|
|
191
|
+
- **Resets** expired cooldowns automatically
|
|
192
|
+
- **Tracks usage** per key (uses least-used strategy when configured)
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Configure strategy
|
|
196
|
+
novacode config # Edit rotation_strategy: "round-robin" or "least-used"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## 🧠 Architecture
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
novacode/
|
|
203
|
+
├── __main__.py # CLI entry point (click)
|
|
204
|
+
├── config.py # JSON config, multi-key, multi-model
|
|
205
|
+
├── client/
|
|
206
|
+
│ ├── nim.py # NVIDIA NIM + OpenAI-compatible client
|
|
207
|
+
│ └── rotation.py # Multi-key rotation engine
|
|
208
|
+
├── agent/
|
|
209
|
+
│ ├── engine.py # Tool execution loop
|
|
210
|
+
│ ├── tools.py # Tool definitions (9 built-in tools)
|
|
211
|
+
│ └── context.py # Token-aware context windowing
|
|
212
|
+
├── ui/
|
|
213
|
+
│ └── app.py # Textual TUI application
|
|
214
|
+
├── models/
|
|
215
|
+
│ └── ... # Model definitions & configs
|
|
216
|
+
└── utils/
|
|
217
|
+
└── helpers.py # Utility functions
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## 📦 Development
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
git clone https://github.com/novacode-ai/novacode.git
|
|
224
|
+
cd novacode
|
|
225
|
+
pip install -e ".[dev]"
|
|
226
|
+
|
|
227
|
+
# Run tests
|
|
228
|
+
pytest
|
|
229
|
+
|
|
230
|
+
# Type check
|
|
231
|
+
mypy src/novacode
|
|
232
|
+
|
|
233
|
+
# Lint
|
|
234
|
+
ruff check src/novacode
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## 🌟 Roadmap
|
|
238
|
+
|
|
239
|
+
- [ ] LSP integration for context-aware code understanding
|
|
240
|
+
- [ ] Multi-session management
|
|
241
|
+
- [ ] Custom tool creation DSL
|
|
242
|
+
- [ ] Project-level memory & patterns
|
|
243
|
+
- [ ] VSCode / JetBrains extension
|
|
244
|
+
- [ ] Local model support (Ollama, llama.cpp)
|
|
245
|
+
- [ ] Collaborative sessions
|
|
246
|
+
|
|
247
|
+
## 📄 License
|
|
248
|
+
|
|
249
|
+
MIT License — see [LICENSE](LICENSE)
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
> **NovaCode** — Because your code deserves the best agent.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
setup.py
|
|
5
|
+
novacode_tui.egg-info/PKG-INFO
|
|
6
|
+
novacode_tui.egg-info/SOURCES.txt
|
|
7
|
+
novacode_tui.egg-info/dependency_links.txt
|
|
8
|
+
novacode_tui.egg-info/entry_points.txt
|
|
9
|
+
novacode_tui.egg-info/requires.txt
|
|
10
|
+
novacode_tui.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "novacode-tui"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "The most powerful TUI AI Coding Agent — surpasses Claude Code & OpenCode with NVIDIA NIM, multi-key rotation, KIMI K2.6 & DeepSeek V4 Pro support"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "MIT"}
|
|
11
|
+
authors = [
|
|
12
|
+
{name = "NovaCode Team"}
|
|
13
|
+
]
|
|
14
|
+
requires-python = ">=3.10"
|
|
15
|
+
keywords = ["ai", "coding", "agent", "tui", "nvidia-nim", "claude-code-alternative"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 4 - Beta",
|
|
18
|
+
"Environment :: Console",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"License :: OSI Approved :: MIT License",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.10",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Topic :: Software Development :: Code Generators",
|
|
26
|
+
"Topic :: Software Development :: Debuggers",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
dependencies = [
|
|
30
|
+
"textual>=1.0.0",
|
|
31
|
+
"httpx>=0.27.0",
|
|
32
|
+
"httpx-sse>=0.4.0",
|
|
33
|
+
"rich>=13.7.0",
|
|
34
|
+
"pyyaml>=6.0",
|
|
35
|
+
"click>=8.1.0",
|
|
36
|
+
"pathspec>=0.12.0",
|
|
37
|
+
"platformdirs>=4.0.0",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
[project.scripts]
|
|
41
|
+
novacode = "novacode.__main__:cli_entry"
|
|
42
|
+
nv = "novacode.__main__:cli_entry"
|
|
43
|
+
|
|
44
|
+
[project.optional-dependencies]
|
|
45
|
+
dev = [
|
|
46
|
+
"pytest>=7.0",
|
|
47
|
+
"pytest-asyncio>=0.21.0",
|
|
48
|
+
"mypy>=1.0",
|
|
49
|
+
"ruff>=0.1.0",
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
[tool.setuptools.packages.find]
|
|
53
|
+
include = ["novacode*"]
|
|
54
|
+
|
|
55
|
+
[tool.setuptools.package-data]
|
|
56
|
+
novacode = ["py.typed"]
|