agentnova 0.3.0__tar.gz → 0.3.2__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 (89) hide show
  1. {agentnova-0.3.0 → agentnova-0.3.2}/PKG-INFO +3 -31
  2. {agentnova-0.3.0 → agentnova-0.3.2}/README.md +269 -297
  3. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/__init__.py +28 -1
  4. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/agent.py +85 -5
  5. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/backends/__init__.py +9 -2
  6. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/backends/base.py +4 -4
  7. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/backends/bitnet.py +1 -1
  8. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/backends/ollama.py +80 -18
  9. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/cli.py +671 -128
  10. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/config.py +8 -2
  11. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/helpers.py +73 -11
  12. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/model_config.py +2 -2
  13. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/prompts.py +64 -29
  14. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/tool_parse.py +9 -0
  15. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/examples/01_quick_diagnostic.py +23 -6
  16. agentnova-0.3.2/agentnova/examples/02_tool_test.py +915 -0
  17. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/examples/03_reasoning_test.py +15 -9
  18. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/examples/04_gsm8k_benchmark.py +4 -1
  19. agentnova-0.3.2/agentnova/examples/05_common_sense.py +388 -0
  20. agentnova-0.3.2/agentnova/examples/06_causal_reasoning.py +369 -0
  21. agentnova-0.3.2/agentnova/examples/07_logical_deduction.py +360 -0
  22. agentnova-0.3.2/agentnova/examples/08_reading_comprehension.py +421 -0
  23. agentnova-0.3.2/agentnova/examples/09_general_knowledge.py +380 -0
  24. agentnova-0.3.2/agentnova/examples/10_implicit_reasoning.py +359 -0
  25. agentnova-0.3.2/agentnova/examples/11_analogical_reasoning.py +366 -0
  26. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/model_discovery.py +140 -0
  27. agentnova-0.3.2/agentnova/soul/__init__.py +97 -0
  28. agentnova-0.3.2/agentnova/soul/loader.py +492 -0
  29. agentnova-0.3.2/agentnova/soul/types.py +262 -0
  30. agentnova-0.3.2/agentnova/souls/nova-helper/IDENTITY.md +36 -0
  31. agentnova-0.3.2/agentnova/souls/nova-helper/SOUL.md +51 -0
  32. agentnova-0.3.2/agentnova/souls/nova-helper/STYLE.md +49 -0
  33. agentnova-0.3.2/agentnova/souls/nova-helper/soul.json +30 -0
  34. agentnova-0.3.2/agentnova/tools/builtins.py +633 -0
  35. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova.egg-info/PKG-INFO +3 -31
  36. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova.egg-info/SOURCES.txt +14 -0
  37. {agentnova-0.3.0 → agentnova-0.3.2}/pyproject.toml +2 -2
  38. {agentnova-0.3.0 → agentnova-0.3.2}/tests/test_acp_integration.py +222 -222
  39. {agentnova-0.3.0 → agentnova-0.3.2}/tests/test_acp_subagents.py +295 -295
  40. agentnova-0.3.0/agentnova/examples/02_tool_test.py +0 -283
  41. agentnova-0.3.0/agentnova/tools/builtins.py +0 -412
  42. {agentnova-0.3.0 → agentnova-0.3.2}/LICENSE +0 -0
  43. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/__main__.py +0 -0
  44. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/acp_plugin.py +0 -0
  45. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/agent_mode.py +0 -0
  46. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/__init__.py +0 -0
  47. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/args_normal.py +0 -0
  48. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/math_prompts.py +0 -0
  49. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/memory.py +0 -0
  50. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/model_family_config.py +0 -0
  51. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/models.py +0 -0
  52. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/core/types.py +0 -0
  53. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/examples/00_basic_agent.py +0 -0
  54. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/examples/__init__.py +0 -0
  55. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/orchestrator.py +0 -0
  56. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/orchestrator_enhanced.py +0 -0
  57. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/py.typed +0 -0
  58. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/shared_args.py +0 -0
  59. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/__init__.py +0 -0
  60. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/acp/SKILL.md +0 -0
  61. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/datetime/SKILL.md +0 -0
  62. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/loader.py +0 -0
  63. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/SKILL.md +0 -0
  64. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/__init__.py +0 -0
  65. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/aggregate_benchmark.py +0 -0
  66. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/generate_report.py +0 -0
  67. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/improve_description.py +0 -0
  68. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/init_skill.py +0 -0
  69. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/package_skill.py +0 -0
  70. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/quick_validate.py +0 -0
  71. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/run_eval.py +0 -0
  72. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/run_loop.py +0 -0
  73. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/security_scan.py +0 -0
  74. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/test_package_skill.py +0 -0
  75. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/test_quick_validate.py +0 -0
  76. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/utils.py +0 -0
  77. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/skill-creator/scripts/validate.py +0 -0
  78. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/skills/web-search/SKILL.md +0 -0
  79. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/tools/__init__.py +0 -0
  80. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/tools/registry.py +0 -0
  81. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova/tools/sandboxed_repl.py +0 -0
  82. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova.egg-info/dependency_links.txt +0 -0
  83. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova.egg-info/entry_points.txt +0 -0
  84. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova.egg-info/requires.txt +0 -0
  85. {agentnova-0.3.0 → agentnova-0.3.2}/agentnova.egg-info/top_level.txt +0 -0
  86. {agentnova-0.3.0 → agentnova-0.3.2}/localclaw/__init__.py +0 -0
  87. {agentnova-0.3.0 → agentnova-0.3.2}/localclaw-redirect/localclaw/__init__.py +0 -0
  88. {agentnova-0.3.0 → agentnova-0.3.2}/setup.cfg +0 -0
  89. {agentnova-0.3.0 → agentnova-0.3.2}/tests/test_agent.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentnova
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: ⚛️ AgentNova - A minimal, hackable agentic framework for local LLM inference
5
5
  Author-email: VTSTech <veritas@vts-tech.org>
6
6
  Maintainer-email: VTSTech <veritas@vts-tech.org>
@@ -32,7 +32,7 @@ Requires-Dist: black>=23.0; extra == "dev"
32
32
  Requires-Dist: ruff>=0.1.0; extra == "dev"
33
33
  Dynamic: license-file
34
34
 
35
- # ⚛️ AgentNova R03
35
+ # ⚛️ AgentNova R03.2
36
36
 
37
37
  **Status: Alpha**
38
38
 
@@ -49,7 +49,7 @@ Inspired by the architecture of OpenClaw, rebuilt from scratch for local-first o
49
49
 
50
50
  [![License](https://img.shields.io/badge/License-MIT-blue)](#license) [![Go to Python website](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2FVTSTech%2FAgentNova%2Frefs%2Fheads%2Fmain%2Fpyproject.toml&query=project.requires-python&label=python&logo=python&logoColor=white)](https://python.org)
51
51
 
52
- ---
52
+ <img width="1102" height="960" alt="image" src="https://github.com/user-attachments/assets/2a5fe9b4-93df-46a0-9383-9e01e0c0105d" />
53
53
 
54
54
  ## 📚 Documentation
55
55
 
@@ -149,34 +149,6 @@ orchestrator.register(AgentCard(
149
149
  result = orchestrator.run("Calculate 15 * 8 and save to file")
150
150
  ```
151
151
 
152
- ## Architecture
153
-
154
- ```
155
- agentnova/
156
- ├── core/
157
- │ ├── types.py # Enum types
158
- │ ├── models.py # Data models
159
- │ ├── memory.py # Sliding window memory
160
- │ ├── tool_parse.py # Tool call extraction
161
- │ ├── helpers.py # Utilities (fuzzy match, security)
162
- │ ├── prompts.py # Model-specific prompts
163
- │ └── model_config.py # Model family configurations
164
- ├── tools/
165
- │ ├── registry.py # Tool registry
166
- │ └── builtins.py # Built-in tools
167
- ├── backends/
168
- │ ├── base.py # Abstract backend
169
- │ ├── ollama.py # Ollama backend
170
- │ └── bitnet.py # BitNet backend
171
- ├── skills/
172
- │ └── loader.py # Skill loader
173
- ├── agent.py # Main Agent class
174
- ├── agent_mode.py # Autonomous mode
175
- ├── orchestrator.py # Multi-agent orchestration
176
- ├── config.py # Configuration
177
- └── cli.py # Command-line interface
178
- ```
179
-
180
152
  ## Tool Support Levels
181
153
 
182
154
  AgentNova supports three levels of tool use:
@@ -1,297 +1,269 @@
1
- # ⚛️ AgentNova R03
2
-
3
- **Status: Alpha**
4
-
5
- A minimal, hackable agentic framework engineered to run **entirely locally** with [Ollama](https://ollama.com) or [BitNet](https://github.com/microsoft/BitNet).
6
-
7
- Inspired by the architecture of OpenClaw, rebuilt from scratch for local-first operation.
8
-
9
- **Written by [VTSTech](https://www.vts-tech.org)** · [GitHub](https://github.com/VTSTech/AgentNova)
10
-
11
- [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/VTSTech/AgentNova/blob/main/AgentNova.ipynb)
12
- [![GitHub commits](https://badgen.net/github/commits/VTSTech/AgentNova)](https://GitHub.com/VTSTech/AgentNova/commit/) [![GitHub latest commit](https://badgen.net/github/last-commit/VTSTech/AgentNova)](https://GitHub.com/VTSTech/AgentNova/commit/)
13
-
14
- [![pip - agentnova](https://img.shields.io/badge/pip-agentnova-2ea44f?logo=PyPi)](https://pypi.org/project/agentnova/) [![PyPI version fury.io](https://badge.fury.io/py/agentnova.svg)](https://pypi.org/project/agentnova/) [![PyPI download month](https://img.shields.io/pypi/dm/agentnova.svg)](https://pypi.org/project/agentnova/) [![PyPI download day](https://img.shields.io/pypi/dd/agentnova.svg)](https://pypi.org/project/agentnova/)
15
-
16
- [![License](https://img.shields.io/badge/License-MIT-blue)](#license) [![Go to Python website](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2FVTSTech%2FAgentNova%2Frefs%2Fheads%2Fmain%2Fpyproject.toml&query=project.requires-python&label=python&logo=python&logoColor=white)](https://python.org)
17
-
18
- ---
19
-
20
- ## 📚 Documentation
21
-
22
- | Document | Description |
23
- |----------|-------------|
24
- | [Architecture.md](https://github.com/VTSTech/AgentNova/blob/main/Architecture.md) | Technical documentation for developers (directory structure, core design, orchestrator modes) |
25
- | [CHANGELOG.md](https://github.com/VTSTech/AgentNova/blob/main/CHANGELOG.md) | Version history and release notes (includes LocalClaw history) |
26
- | [TESTS.md](https://github.com/VTSTech/AgentNova/blob/main/TESTS.md) | Benchmark results, model recommendations, and testing guide |
27
-
28
- ## Features
29
-
30
- - **Zero dependencies** — Uses Python stdlib only (urllib for HTTP)
31
- - **Ollama + BitNet backends** — Switch with `--backend` flag
32
- - **Three-tier tool support** — Native, ReAct, or none (auto-detected)
33
- - **Small model optimized** — Fuzzy matching, argument normalization
34
- - **Built-in security** — Path validation, command blocklist, SSRF protection
35
- - **Multi-agent orchestration** — Router, pipeline, and parallel modes
36
-
37
- ## Installation
38
-
39
- ```bash
40
- # From source
41
- git clone https://github.com/VTSTech/AgentNova.git
42
- cd AgentNova
43
- pip install -e .
44
-
45
- # Or from PyPI (when published)
46
- pip install agentnova
47
- ```
48
-
49
- ## Quick Start
50
-
51
- ### CLI Usage
52
-
53
- ```bash
54
- # Run a single prompt
55
- agentnova run "What is 15 * 8?" --tools calculator
56
-
57
- # Interactive chat
58
- agentnova chat -m qwen2.5:0.5b --tools calculator,shell
59
-
60
- # Autonomous agent mode
61
- agentnova agent -m qwen2.5:7b --tools calculator,shell,write_file
62
-
63
- # List available models
64
- agentnova models
65
-
66
- # List available tools
67
- agentnova tools
68
- ```
69
-
70
- ### Python API
71
-
72
- ```python
73
- from agentnova import Agent
74
- from agentnova.tools import make_builtin_registry
75
-
76
- # Create tools
77
- tools = make_builtin_registry().subset(["calculator", "shell"])
78
-
79
- # Create agent
80
- agent = Agent(
81
- model="qwen2.5:0.5b",
82
- tools=tools,
83
- backend="ollama",
84
- )
85
-
86
- # Run
87
- result = agent.run("What is 15 * 8?")
88
- print(result.final_answer)
89
- print(f"Completed in {result.total_ms:.0f}ms")
90
- ```
91
-
92
- ### Multi-Agent Orchestration
93
-
94
- ```python
95
- from agentnova import Agent, Orchestrator, AgentCard
96
-
97
- orchestrator = Orchestrator(mode="router")
98
-
99
- # Register specialized agents
100
- orchestrator.register(AgentCard(
101
- name="math_agent",
102
- description="Handles mathematical calculations",
103
- capabilities=["calculate", "math", "compute"],
104
- tools=["calculator"],
105
- ))
106
-
107
- orchestrator.register(AgentCard(
108
- name="file_agent",
109
- description="Handles file operations",
110
- capabilities=["read", "write", "file"],
111
- tools=["read_file", "write_file"],
112
- ))
113
-
114
- # Route tasks to appropriate agent
115
- result = orchestrator.run("Calculate 15 * 8 and save to file")
116
- ```
117
-
118
- ## Architecture
119
-
120
- ```
121
- agentnova/
122
- ├── core/
123
- │ ├── types.py # Enum types
124
- │ ├── models.py # Data models
125
- │ ├── memory.py # Sliding window memory
126
- │ ├── tool_parse.py # Tool call extraction
127
- │ ├── helpers.py # Utilities (fuzzy match, security)
128
- │ ├── prompts.py # Model-specific prompts
129
- │ └── model_config.py # Model family configurations
130
- ├── tools/
131
- │ ├── registry.py # Tool registry
132
- │ └── builtins.py # Built-in tools
133
- ├── backends/
134
- │ ├── base.py # Abstract backend
135
- │ ├── ollama.py # Ollama backend
136
- │ └── bitnet.py # BitNet backend
137
- ├── skills/
138
- │ └── loader.py # Skill loader
139
- ├── agent.py # Main Agent class
140
- ├── agent_mode.py # Autonomous mode
141
- ├── orchestrator.py # Multi-agent orchestration
142
- ├── config.py # Configuration
143
- └── cli.py # Command-line interface
144
- ```
145
-
146
- ## Tool Support Levels
147
-
148
- AgentNova supports three levels of tool use:
149
-
150
- 1. **Native** — Models with built-in function calling (qwen2.5, llama3.1+, mistral, granite, functiongemma)
151
- 2. **ReAct** — Text-based tool use via reasoning prompts (qwen2.5-coder, qwen3)
152
- 3. **None** — Pure reasoning without tools
153
-
154
- Tool support is auto-detected by running `agentnova models --tool-support`. Results are cached in `~/.cache/agentnova/tool_support.json`.
155
-
156
- ```bash
157
- # Test and cache tool support for all models
158
- agentnova models --tool-support
159
-
160
- # Re-test (ignore cache)
161
- agentnova models --tool-support --no-cache
162
- ```
163
-
164
- You can also force ReAct mode:
165
-
166
- ```python
167
- agent = Agent(model="qwen2.5:0.5b", force_react=True)
168
- ```
169
-
170
- ## Model Families
171
-
172
- Configured model families with optimized prompts:
173
-
174
- - **qwen2.5** — Native tool support, excellent performance
175
- - **llama3.1/3.2/3.3** — Native tool support
176
- - **mistral/mixtral** — Native tool support
177
- - **gemma2/gemma3** — ReAct mode, special prompting
178
- - **granite/granitemoe** — Native tool support
179
- - **phi3** — Native tool support
180
- - **deepseek** — Native with `<think/>` tag handling
181
-
182
- ## Security Features
183
-
184
- Built-in security for safe operation:
185
-
186
- - **Command blocklist** — Blocks dangerous shell commands (rm, sudo, etc.)
187
- - **Path validation** — Prevents access to sensitive directories
188
- - **SSRF protection** — Blocks requests to local/internal URLs
189
- - **Injection detection** — Detects shell injection patterns
190
-
191
- ## Configuration
192
-
193
- Environment variables:
194
-
195
- ```bash
196
- # Backend URLs
197
- OLLAMA_BASE_URL=https://your-ollama-server.com # Default: http://localhost:11434
198
- BITNET_BASE_URL=http://localhost:8765 # BitNet server URL
199
- BITNET_TUNNEL=https://your-tunnel.com # Alternative BitNet URL
200
- ACP_BASE_URL=http://localhost:8766 # ACP server URL
201
-
202
- # Agent settings
203
- AGENTNOVA_BACKEND=ollama # Default backend: ollama or bitnet
204
- AGENTNOVA_MODEL=qwen2.5:0.5b # Default model
205
- AGENTNOVA_MAX_STEPS=10 # Maximum reasoning steps
206
- AGENTNOVA_DEBUG=false # Enable debug output
207
- ```
208
-
209
- Check current configuration:
210
- ```bash
211
- agentnova config
212
- agentnova config --urls # Show only URLs
213
- ```
214
-
215
- ## LocalClaw Redirect
216
-
217
- The `localclaw` command is provided for backward compatibility:
218
-
219
- ```bash
220
- # Both work identically
221
- localclaw run "What is 2+2?"
222
- agentnova run "What is 2+2?"
223
- ```
224
-
225
- ## Tests & Examples
226
-
227
- AgentNova includes a suite of tests for validating agent capabilities:
228
-
229
- ```bash
230
- # Basic agent test (no tools)
231
- python -m agentnova.examples.00_basic_agent
232
-
233
- # Quick 5-question diagnostic
234
- python -m agentnova.examples.01_quick_diagnostic
235
-
236
- # Tool usage tests (calculator, shell, datetime)
237
- python -m agentnova.examples.02_tool_test
238
-
239
- # Logic and reasoning tests (BBH-style)
240
- python -m agentnova.examples.03_reasoning_test
241
-
242
- # GSM8K math benchmark (50 questions)
243
- python -m agentnova.examples.04_gsm8k_benchmark
244
- ```
245
-
246
- ### Test Categories
247
-
248
- | Test | Questions | Focus |
249
- |------|-----------|-------|
250
- | Quick Diagnostic | 5 | Calculator tool, multi-step reasoning |
251
- | Tool Test | 10 | Calculator, shell, datetime tools |
252
- | Reasoning Test | 13 | Logic, deduction, patterns, spatial |
253
- | GSM8K Benchmark | 50 | Math word problems |
254
-
255
- ### Benchmark Results (Quick Diagnostic)
256
-
257
- | Model | Score | Time | Tool Support |
258
- |-------|-------|------|-------------|
259
- | functiongemma:270m | 5/5 (100%) | ~20s | native |
260
- | granite4:350m | 5/5 (100%) | ~50s | native |
261
- | qwen2.5:0.5b | 5/5 (100%) | 38s | native |
262
- | qwen2.5-coder:0.5b | 5/5 (100%) | 93s | react |
263
- | qwen3:0.6b | 5/5 (100%) | 70s | react |
264
-
265
- All tested models achieve 100% on the Quick Diagnostic. Native models are ~2x faster than ReAct models due to direct API tool calling.
266
-
267
- ## Development
268
-
269
- ```bash
270
- # Install dev dependencies
271
- pip install -e ".[dev]"
272
-
273
- # Run unit tests
274
- pytest
275
-
276
- # Format code
277
- black agentnova
278
- ruff check agentnova
279
- ```
280
-
281
- ## License
282
-
283
- MIT License - See LICENSE file for details.
284
-
285
- ## Author
286
-
287
- **VTSTech** — [https://www.vts-tech.org](https://www.vts-tech.org)
288
-
289
- ## Contributing
290
-
291
- Contributions welcome! Please read the contributing guidelines first.
292
-
293
- ## Acknowledgments
294
-
295
- - Built for local inference with [Ollama](https://ollama.ai)
296
- - Optimized for small, efficient models
297
- - Inspired by ReAct and other agentic frameworks
1
+ # ⚛️ AgentNova R03.2
2
+
3
+ **Status: Alpha**
4
+
5
+ A minimal, hackable agentic framework engineered to run **entirely locally** with [Ollama](https://ollama.com) or [BitNet](https://github.com/microsoft/BitNet).
6
+
7
+ Inspired by the architecture of OpenClaw, rebuilt from scratch for local-first operation.
8
+
9
+ **Written by [VTSTech](https://www.vts-tech.org)** · [GitHub](https://github.com/VTSTech/AgentNova)
10
+
11
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/VTSTech/AgentNova/blob/main/AgentNova.ipynb)
12
+ [![GitHub commits](https://badgen.net/github/commits/VTSTech/AgentNova)](https://GitHub.com/VTSTech/AgentNova/commit/) [![GitHub latest commit](https://badgen.net/github/last-commit/VTSTech/AgentNova)](https://GitHub.com/VTSTech/AgentNova/commit/)
13
+
14
+ [![pip - agentnova](https://img.shields.io/badge/pip-agentnova-2ea44f?logo=PyPi)](https://pypi.org/project/agentnova/) [![PyPI version fury.io](https://badge.fury.io/py/agentnova.svg)](https://pypi.org/project/agentnova/) [![PyPI download month](https://img.shields.io/pypi/dm/agentnova.svg)](https://pypi.org/project/agentnova/) [![PyPI download day](https://img.shields.io/pypi/dd/agentnova.svg)](https://pypi.org/project/agentnova/)
15
+
16
+ [![License](https://img.shields.io/badge/License-MIT-blue)](#license) [![Go to Python website](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2FVTSTech%2FAgentNova%2Frefs%2Fheads%2Fmain%2Fpyproject.toml&query=project.requires-python&label=python&logo=python&logoColor=white)](https://python.org)
17
+
18
+ <img width="1102" height="960" alt="image" src="https://github.com/user-attachments/assets/2a5fe9b4-93df-46a0-9383-9e01e0c0105d" />
19
+
20
+ ## 📚 Documentation
21
+
22
+ | Document | Description |
23
+ |----------|-------------|
24
+ | [Architecture.md](https://github.com/VTSTech/AgentNova/blob/main/Architecture.md) | Technical documentation for developers (directory structure, core design, orchestrator modes) |
25
+ | [CHANGELOG.md](https://github.com/VTSTech/AgentNova/blob/main/CHANGELOG.md) | Version history and release notes (includes LocalClaw history) |
26
+ | [TESTS.md](https://github.com/VTSTech/AgentNova/blob/main/TESTS.md) | Benchmark results, model recommendations, and testing guide |
27
+
28
+ ## Features
29
+
30
+ - **Zero dependencies** — Uses Python stdlib only (urllib for HTTP)
31
+ - **Ollama + BitNet backends** — Switch with `--backend` flag
32
+ - **Three-tier tool support** — Native, ReAct, or none (auto-detected)
33
+ - **Small model optimized** — Fuzzy matching, argument normalization
34
+ - **Built-in security** — Path validation, command blocklist, SSRF protection
35
+ - **Multi-agent orchestration** — Router, pipeline, and parallel modes
36
+
37
+ ## Installation
38
+
39
+ ```bash
40
+ # From source
41
+ git clone https://github.com/VTSTech/AgentNova.git
42
+ cd AgentNova
43
+ pip install -e .
44
+
45
+ # Or from PyPI (when published)
46
+ pip install agentnova
47
+ ```
48
+
49
+ ## Quick Start
50
+
51
+ ### CLI Usage
52
+
53
+ ```bash
54
+ # Run a single prompt
55
+ agentnova run "What is 15 * 8?" --tools calculator
56
+
57
+ # Interactive chat
58
+ agentnova chat -m qwen2.5:0.5b --tools calculator,shell
59
+
60
+ # Autonomous agent mode
61
+ agentnova agent -m qwen2.5:7b --tools calculator,shell,write_file
62
+
63
+ # List available models
64
+ agentnova models
65
+
66
+ # List available tools
67
+ agentnova tools
68
+ ```
69
+
70
+ ### Python API
71
+
72
+ ```python
73
+ from agentnova import Agent
74
+ from agentnova.tools import make_builtin_registry
75
+
76
+ # Create tools
77
+ tools = make_builtin_registry().subset(["calculator", "shell"])
78
+
79
+ # Create agent
80
+ agent = Agent(
81
+ model="qwen2.5:0.5b",
82
+ tools=tools,
83
+ backend="ollama",
84
+ )
85
+
86
+ # Run
87
+ result = agent.run("What is 15 * 8?")
88
+ print(result.final_answer)
89
+ print(f"Completed in {result.total_ms:.0f}ms")
90
+ ```
91
+
92
+ ### Multi-Agent Orchestration
93
+
94
+ ```python
95
+ from agentnova import Agent, Orchestrator, AgentCard
96
+
97
+ orchestrator = Orchestrator(mode="router")
98
+
99
+ # Register specialized agents
100
+ orchestrator.register(AgentCard(
101
+ name="math_agent",
102
+ description="Handles mathematical calculations",
103
+ capabilities=["calculate", "math", "compute"],
104
+ tools=["calculator"],
105
+ ))
106
+
107
+ orchestrator.register(AgentCard(
108
+ name="file_agent",
109
+ description="Handles file operations",
110
+ capabilities=["read", "write", "file"],
111
+ tools=["read_file", "write_file"],
112
+ ))
113
+
114
+ # Route tasks to appropriate agent
115
+ result = orchestrator.run("Calculate 15 * 8 and save to file")
116
+ ```
117
+
118
+ ## Tool Support Levels
119
+
120
+ AgentNova supports three levels of tool use:
121
+
122
+ 1. **Native** — Models with built-in function calling (qwen2.5, llama3.1+, mistral, granite, functiongemma)
123
+ 2. **ReAct** — Text-based tool use via reasoning prompts (qwen2.5-coder, qwen3)
124
+ 3. **None** — Pure reasoning without tools
125
+
126
+ Tool support is auto-detected by running `agentnova models --tool-support`. Results are cached in `~/.cache/agentnova/tool_support.json`.
127
+
128
+ ```bash
129
+ # Test and cache tool support for all models
130
+ agentnova models --tool-support
131
+
132
+ # Re-test (ignore cache)
133
+ agentnova models --tool-support --no-cache
134
+ ```
135
+
136
+ You can also force ReAct mode:
137
+
138
+ ```python
139
+ agent = Agent(model="qwen2.5:0.5b", force_react=True)
140
+ ```
141
+
142
+ ## Model Families
143
+
144
+ Configured model families with optimized prompts:
145
+
146
+ - **qwen2.5** — Native tool support, excellent performance
147
+ - **llama3.1/3.2/3.3** — Native tool support
148
+ - **mistral/mixtral** — Native tool support
149
+ - **gemma2/gemma3** — ReAct mode, special prompting
150
+ - **granite/granitemoe** — Native tool support
151
+ - **phi3** — Native tool support
152
+ - **deepseek** — Native with `<think/>` tag handling
153
+
154
+ ## Security Features
155
+
156
+ Built-in security for safe operation:
157
+
158
+ - **Command blocklist** — Blocks dangerous shell commands (rm, sudo, etc.)
159
+ - **Path validation** — Prevents access to sensitive directories
160
+ - **SSRF protection** — Blocks requests to local/internal URLs
161
+ - **Injection detection** — Detects shell injection patterns
162
+
163
+ ## Configuration
164
+
165
+ Environment variables:
166
+
167
+ ```bash
168
+ # Backend URLs
169
+ OLLAMA_BASE_URL=https://your-ollama-server.com # Default: http://localhost:11434
170
+ BITNET_BASE_URL=http://localhost:8765 # BitNet server URL
171
+ BITNET_TUNNEL=https://your-tunnel.com # Alternative BitNet URL
172
+ ACP_BASE_URL=http://localhost:8766 # ACP server URL
173
+
174
+ # Agent settings
175
+ AGENTNOVA_BACKEND=ollama # Default backend: ollama or bitnet
176
+ AGENTNOVA_MODEL=qwen2.5:0.5b # Default model
177
+ AGENTNOVA_MAX_STEPS=10 # Maximum reasoning steps
178
+ AGENTNOVA_DEBUG=false # Enable debug output
179
+ ```
180
+
181
+ Check current configuration:
182
+ ```bash
183
+ agentnova config
184
+ agentnova config --urls # Show only URLs
185
+ ```
186
+
187
+ ## LocalClaw Redirect
188
+
189
+ The `localclaw` command is provided for backward compatibility:
190
+
191
+ ```bash
192
+ # Both work identically
193
+ localclaw run "What is 2+2?"
194
+ agentnova run "What is 2+2?"
195
+ ```
196
+
197
+ ## Tests & Examples
198
+
199
+ AgentNova includes a suite of tests for validating agent capabilities:
200
+
201
+ ```bash
202
+ # Basic agent test (no tools)
203
+ python -m agentnova.examples.00_basic_agent
204
+
205
+ # Quick 5-question diagnostic
206
+ python -m agentnova.examples.01_quick_diagnostic
207
+
208
+ # Tool usage tests (calculator, shell, datetime)
209
+ python -m agentnova.examples.02_tool_test
210
+
211
+ # Logic and reasoning tests (BBH-style)
212
+ python -m agentnova.examples.03_reasoning_test
213
+
214
+ # GSM8K math benchmark (50 questions)
215
+ python -m agentnova.examples.04_gsm8k_benchmark
216
+ ```
217
+
218
+ ### Test Categories
219
+
220
+ | Test | Questions | Focus |
221
+ |------|-----------|-------|
222
+ | Quick Diagnostic | 5 | Calculator tool, multi-step reasoning |
223
+ | Tool Test | 10 | Calculator, shell, datetime tools |
224
+ | Reasoning Test | 13 | Logic, deduction, patterns, spatial |
225
+ | GSM8K Benchmark | 50 | Math word problems |
226
+
227
+ ### Benchmark Results (Quick Diagnostic)
228
+
229
+ | Model | Score | Time | Tool Support |
230
+ |-------|-------|------|-------------|
231
+ | functiongemma:270m | 5/5 (100%) | ~20s | native |
232
+ | granite4:350m | 5/5 (100%) | ~50s | native |
233
+ | qwen2.5:0.5b | 5/5 (100%) | 38s | native |
234
+ | qwen2.5-coder:0.5b | 5/5 (100%) | 93s | react |
235
+ | qwen3:0.6b | 5/5 (100%) | 70s | react |
236
+
237
+ All tested models achieve 100% on the Quick Diagnostic. Native models are ~2x faster than ReAct models due to direct API tool calling.
238
+
239
+ ## Development
240
+
241
+ ```bash
242
+ # Install dev dependencies
243
+ pip install -e ".[dev]"
244
+
245
+ # Run unit tests
246
+ pytest
247
+
248
+ # Format code
249
+ black agentnova
250
+ ruff check agentnova
251
+ ```
252
+
253
+ ## License
254
+
255
+ MIT License - See LICENSE file for details.
256
+
257
+ ## Author
258
+
259
+ **VTSTech** — [https://www.vts-tech.org](https://www.vts-tech.org)
260
+
261
+ ## Contributing
262
+
263
+ Contributions welcome! Please read the contributing guidelines first.
264
+
265
+ ## Acknowledgments
266
+
267
+ - Built for local inference with [Ollama](https://ollama.ai)
268
+ - Optimized for small, efficient models
269
+ - Inspired by ReAct and other agentic frameworks