grokforge 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.
- grokforge-0.1.0/LICENSE +21 -0
- grokforge-0.1.0/PKG-INFO +202 -0
- grokforge-0.1.0/README.md +191 -0
- grokforge-0.1.0/pyproject.toml +20 -0
- grokforge-0.1.0/setup.cfg +4 -0
- grokforge-0.1.0/src/assistant/__init__.py +16 -0
- grokforge-0.1.0/src/bootstrap/__init__.py +16 -0
- grokforge-0.1.0/src/bridge/__init__.py +16 -0
- grokforge-0.1.0/src/buddy/__init__.py +16 -0
- grokforge-0.1.0/src/cli/__init__.py +16 -0
- grokforge-0.1.0/src/commands/__init__.py +33 -0
- grokforge-0.1.0/src/components/__init__.py +16 -0
- grokforge-0.1.0/src/constants/__init__.py +16 -0
- grokforge-0.1.0/src/coordinator/__init__.py +16 -0
- grokforge-0.1.0/src/entrypoints/__init__.py +16 -0
- grokforge-0.1.0/src/grokforge/__init__.py +3 -0
- grokforge-0.1.0/src/grokforge/__main__.py +5 -0
- grokforge-0.1.0/src/grokforge/api.py +15 -0
- grokforge-0.1.0/src/grokforge/core/__init__.py +0 -0
- grokforge-0.1.0/src/grokforge/core/react_v2.py +57 -0
- grokforge-0.1.0/src/grokforge/grokdream/__init__.py +0 -0
- grokforge-0.1.0/src/grokforge/grokdream/core.py +16 -0
- grokforge-0.1.0/src/grokforge/memory.py +65 -0
- grokforge-0.1.0/src/grokforge/swarm/__init__.py +48 -0
- grokforge-0.1.0/src/grokforge/swarm.py +17 -0
- grokforge-0.1.0/src/grokforge/tools/__init__.py +18 -0
- grokforge-0.1.0/src/grokforge/vision.py +99 -0
- grokforge-0.1.0/src/grokforge.egg-info/PKG-INFO +202 -0
- grokforge-0.1.0/src/grokforge.egg-info/SOURCES.txt +69 -0
- grokforge-0.1.0/src/grokforge.egg-info/dependency_links.txt +1 -0
- grokforge-0.1.0/src/grokforge.egg-info/entry_points.txt +2 -0
- grokforge-0.1.0/src/grokforge.egg-info/requires.txt +2 -0
- grokforge-0.1.0/src/grokforge.egg-info/top_level.txt +37 -0
- grokforge-0.1.0/src/hooks/__init__.py +16 -0
- grokforge-0.1.0/src/keybindings/__init__.py +16 -0
- grokforge-0.1.0/src/legacy_types/__init__.py +16 -0
- grokforge-0.1.0/src/memdir/__init__.py +16 -0
- grokforge-0.1.0/src/migrations/__init__.py +16 -0
- grokforge-0.1.0/src/monitoring/auto_healing_monitor.py +70 -0
- grokforge-0.1.0/src/monitoring/dashboard.py +83 -0
- grokforge-0.1.0/src/moreright/__init__.py +16 -0
- grokforge-0.1.0/src/native_ts/__init__.py +16 -0
- grokforge-0.1.0/src/outputStyles/__init__.py +16 -0
- grokforge-0.1.0/src/plugins/__init__.py +16 -0
- grokforge-0.1.0/src/react/__init__.py +1 -0
- grokforge-0.1.0/src/react/loop.py +45 -0
- grokforge-0.1.0/src/reference_data/__init__.py +1 -0
- grokforge-0.1.0/src/remote/__init__.py +16 -0
- grokforge-0.1.0/src/schemas/__init__.py +16 -0
- grokforge-0.1.0/src/screens/__init__.py +16 -0
- grokforge-0.1.0/src/server/__init__.py +16 -0
- grokforge-0.1.0/src/services/__init__.py +16 -0
- grokforge-0.1.0/src/skills/__init__.py +16 -0
- grokforge-0.1.0/src/state/__init__.py +16 -0
- grokforge-0.1.0/src/tool_registry/grok_native_tools.py +46 -0
- grokforge-0.1.0/src/tools/__init__.py +44 -0
- grokforge-0.1.0/src/tools/researcher.py +14 -0
- grokforge-0.1.0/src/tools/safe_git.py +21 -0
- grokforge-0.1.0/src/tools/self_review.py +11 -0
- grokforge-0.1.0/src/tools/web_search.py +5 -0
- grokforge-0.1.0/src/ui/__init__.py +0 -0
- grokforge-0.1.0/src/ui/dark_mode_toggle.py +1 -0
- grokforge-0.1.0/src/ui/rich_helpers.py +8 -0
- grokforge-0.1.0/src/ui/rich_streaming.py +48 -0
- grokforge-0.1.0/src/upstreamproxy/__init__.py +16 -0
- grokforge-0.1.0/src/utils/__init__.py +16 -0
- grokforge-0.1.0/src/vim/__init__.py +16 -0
- grokforge-0.1.0/src/voice/__init__.py +16 -0
- grokforge-0.1.0/tests/test_e2e.py +5 -0
- grokforge-0.1.0/tests/test_phase7_toolcalling.py +8 -0
- grokforge-0.1.0/tests/test_porting_workspace.py +248 -0
grokforge-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 sespear86
|
|
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.
|
grokforge-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: grokforge
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: GrokForge — Autonomous Feature Shipping with ReAct 2.0
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Dist: typer>=0.9.0
|
|
9
|
+
Requires-Dist: rich>=13.0.0
|
|
10
|
+
Dynamic: license-file
|
|
11
|
+
|
|
12
|
+
# Rewriting Project Claw Code
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
<strong>⭐ The fastest repo in history to surpass 50K stars, reaching the milestone in just 2 hours after publication ⭐</strong>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="https://star-history.com/#instructkr/claw-code&Date">
|
|
20
|
+
<picture>
|
|
21
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=instructkr/claw-code&type=Date&theme=dark" />
|
|
22
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=instructkr/claw-code&type=Date" />
|
|
23
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=instructkr/claw-code&type=Date" width="600" />
|
|
24
|
+
</picture>
|
|
25
|
+
</a>
|
|
26
|
+
</p>
|
|
27
|
+
|
|
28
|
+
<p align="center">
|
|
29
|
+
<img src="assets/clawd-hero.jpeg" alt="Claw" width="300" />
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
<p align="center">
|
|
33
|
+
<strong>Better Harness Tools, not merely storing the archive of leaked Claude Code</strong>
|
|
34
|
+
</p>
|
|
35
|
+
|
|
36
|
+
<p align="center">
|
|
37
|
+
<a href="https://github.com/sponsors/instructkr"><img src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?logo=github&style=for-the-badge" alt="Sponsor on GitHub" /></a>
|
|
38
|
+
</p>
|
|
39
|
+
|
|
40
|
+
> [!IMPORTANT]
|
|
41
|
+
> **Rust port is now in progress** on the [`dev/rust`](https://github.com/instructkr/claw-code/tree/dev/rust) branch and is expected to be merged into main today. The Rust implementation aims to deliver a faster, memory-safe harness runtime. Stay tuned — this will be the definitive version of the project.
|
|
42
|
+
|
|
43
|
+
> If you find this work useful, consider [sponsoring @instructkr on GitHub](https://github.com/sponsors/instructkr) to support continued open-source harness engineering research.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Backstory
|
|
48
|
+
|
|
49
|
+
At 4 AM on March 31, 2026, I woke up to my phone blowing up with notifications. The Claude Code source had been exposed, and the entire dev community was in a frenzy. My girlfriend in Korea was genuinely worried I might face legal action from Anthropic just for having the code on my machine — so I did what any engineer would do under pressure: I sat down, ported the core features to Python from scratch, and pushed it before the sun came up.
|
|
50
|
+
|
|
51
|
+
The whole thing was orchestrated end-to-end using [oh-my-codex (OmX)](https://github.com/Yeachan-Heo/oh-my-codex) by [@bellman_ych](https://x.com/bellman_ych) — a workflow layer built on top of OpenAI's Codex ([@OpenAIDevs](https://x.com/OpenAIDevs)). I used `$team` mode for parallel code review and `$ralph` mode for persistent execution loops with architect-level verification. The entire porting session — from reading the original harness structure to producing a working Python tree with tests — was driven through OmX orchestration.
|
|
52
|
+
|
|
53
|
+
The result is a clean-room Python rewrite that captures the architectural patterns of Claude Code's agent harness without copying any proprietary source. I'm now actively collaborating with [@bellman_ych](https://x.com/bellman_ych) — the creator of OmX himself — to push this further. The basic Python foundation is already in place and functional, but we're just getting started. **Stay tuned — a much more capable version is on the way.**
|
|
54
|
+
|
|
55
|
+
https://github.com/instructkr/claw-code
|
|
56
|
+
|
|
57
|
+

|
|
58
|
+
|
|
59
|
+
## The Creators Featured in Wall Street Journal For Avid Claude Code Fans
|
|
60
|
+
|
|
61
|
+
I've been deeply interested in **harness engineering** — studying how agent systems wire tools, orchestrate tasks, and manage runtime context. This isn't a sudden thing. The Wall Street Journal featured my work earlier this month, documenting how I've been one of the most active power users exploring these systems:
|
|
62
|
+
|
|
63
|
+
> AI startup worker Sigrid Jin, who attended the Seoul dinner, single-handedly used 25 billion of Claude Code tokens last year. At the time, usage limits were looser, allowing early enthusiasts to reach tens of billions of tokens at a very low cost.
|
|
64
|
+
>
|
|
65
|
+
> Despite his countless hours with Claude Code, Jin isn't faithful to any one AI lab. The tools available have different strengths and weaknesses, he said. Codex is better at reasoning, while Claude Code generates cleaner, more shareable code.
|
|
66
|
+
>
|
|
67
|
+
> Jin flew to San Francisco in February for Claude Code's first birthday party, where attendees waited in line to compare notes with Cherny. The crowd included a practicing cardiologist from Belgium who had built an app to help patients navigate care, and a California lawyer who made a tool for automating building permit approvals using Claude Code.
|
|
68
|
+
>
|
|
69
|
+
> "It was basically like a sharing party," Jin said. "There were lawyers, there were doctors, there were dentists. They did not have software engineering backgrounds."
|
|
70
|
+
>
|
|
71
|
+
> — *The Wall Street Journal*, March 21, 2026, [*"The Trillion Dollar Race to Automate Our Entire Lives"*](https://lnkd.in/gs9td3qd)
|
|
72
|
+
|
|
73
|
+

|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Porting Status
|
|
78
|
+
|
|
79
|
+
The main source tree is now Python-first.
|
|
80
|
+
|
|
81
|
+
- `src/` contains the active Python porting workspace
|
|
82
|
+
- `tests/` verifies the current Python workspace
|
|
83
|
+
- the exposed snapshot is no longer part of the tracked repository state
|
|
84
|
+
|
|
85
|
+
The current Python workspace is not yet a complete one-to-one replacement for the original system, but the primary implementation surface is now Python.
|
|
86
|
+
|
|
87
|
+
## Why this rewrite exists
|
|
88
|
+
|
|
89
|
+
I originally studied the exposed codebase to understand its harness, tool wiring, and agent workflow. After spending more time with the legal and ethical questions—and after reading the essay linked below—I did not want the exposed snapshot itself to remain the main tracked source tree.
|
|
90
|
+
|
|
91
|
+
This repository now focuses on Python porting work instead.
|
|
92
|
+
|
|
93
|
+
## Repository Layout
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
.
|
|
97
|
+
├── src/ # Python porting workspace
|
|
98
|
+
│ ├── __init__.py
|
|
99
|
+
│ ├── commands.py
|
|
100
|
+
│ ├── main.py
|
|
101
|
+
│ ├── models.py
|
|
102
|
+
│ ├── port_manifest.py
|
|
103
|
+
│ ├── query_engine.py
|
|
104
|
+
│ ├── task.py
|
|
105
|
+
│ └── tools.py
|
|
106
|
+
├── tests/ # Python verification
|
|
107
|
+
├── assets/omx/ # OmX workflow screenshots
|
|
108
|
+
├── 2026-03-09-is-legal-the-same-as-legitimate-ai-reimplementation-and-the-erosion-of-copyleft.md
|
|
109
|
+
└── README.md
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Python Workspace Overview
|
|
113
|
+
|
|
114
|
+
The new Python `src/` tree currently provides:
|
|
115
|
+
|
|
116
|
+
- **`port_manifest.py`** — summarizes the current Python workspace structure
|
|
117
|
+
- **`models.py`** — dataclasses for subsystems, modules, and backlog state
|
|
118
|
+
- **`commands.py`** — Python-side command port metadata
|
|
119
|
+
- **`tools.py`** — Python-side tool port metadata
|
|
120
|
+
- **`query_engine.py`** — renders a Python porting summary from the active workspace
|
|
121
|
+
- **`main.py`** — a CLI entrypoint for manifest and summary output
|
|
122
|
+
|
|
123
|
+
## Quickstart
|
|
124
|
+
|
|
125
|
+
Render the Python porting summary:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
python3 -m src.main summary
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Print the current Python workspace manifest:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
python3 -m src.main manifest
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
List the current Python modules:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
python3 -m src.main subsystems --limit 16
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Run verification:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
python3 -m unittest discover -s tests -v
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Run the parity audit against the local ignored archive (when present):
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
python3 -m src.main parity-audit
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Inspect mirrored command/tool inventories:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
python3 -m src.main commands --limit 10
|
|
159
|
+
python3 -m src.main tools --limit 10
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Current Parity Checkpoint
|
|
163
|
+
|
|
164
|
+
The port now mirrors the archived root-entry file surface, top-level subsystem names, and command/tool inventories much more closely than before. However, it is **not yet** a full runtime-equivalent replacement for the original TypeScript system; the Python tree still contains fewer executable runtime slices than the archived source.
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
## Built with `oh-my-codex`
|
|
168
|
+
|
|
169
|
+
The restructuring and documentation work on this repository was AI-assisted and orchestrated with Yeachan Heo's [oh-my-codex (OmX)](https://github.com/Yeachan-Heo/oh-my-codex), layered on top of Codex.
|
|
170
|
+
|
|
171
|
+
- **`$team` mode:** used for coordinated parallel review and architectural feedback
|
|
172
|
+
- **`$ralph` mode:** used for persistent execution, verification, and completion discipline
|
|
173
|
+
- **Codex-driven workflow:** used to turn the main `src/` tree into a Python-first porting workspace
|
|
174
|
+
|
|
175
|
+
### OmX workflow screenshots
|
|
176
|
+
|
|
177
|
+

|
|
178
|
+
|
|
179
|
+
*Ralph/team orchestration view while the README and essay context were being reviewed in terminal panes.*
|
|
180
|
+
|
|
181
|
+

|
|
182
|
+
|
|
183
|
+
*Split-pane review and verification flow during the final README wording pass.*
|
|
184
|
+
|
|
185
|
+
## Community
|
|
186
|
+
|
|
187
|
+
<p align="center">
|
|
188
|
+
<a href="https://instruct.kr/"><img src="assets/instructkr.png" alt="instructkr" width="400" /></a>
|
|
189
|
+
</p>
|
|
190
|
+
|
|
191
|
+
Join the [**instructkr Discord**](https://instruct.kr/) — the best Korean language model community. Come chat about LLMs, harness engineering, agent workflows, and everything in between.
|
|
192
|
+
|
|
193
|
+
[](https://instruct.kr/)
|
|
194
|
+
|
|
195
|
+
## Star History
|
|
196
|
+
|
|
197
|
+
See the chart at the top of this README.
|
|
198
|
+
|
|
199
|
+
## Ownership / Affiliation Disclaimer
|
|
200
|
+
|
|
201
|
+
- This repository does **not** claim ownership of the original Claude Code source material.
|
|
202
|
+
- This repository is **not affiliated with, endorsed by, or maintained by Anthropic**.
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# Rewriting Project Claw Code
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>⭐ The fastest repo in history to surpass 50K stars, reaching the milestone in just 2 hours after publication ⭐</strong>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://star-history.com/#instructkr/claw-code&Date">
|
|
9
|
+
<picture>
|
|
10
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=instructkr/claw-code&type=Date&theme=dark" />
|
|
11
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=instructkr/claw-code&type=Date" />
|
|
12
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=instructkr/claw-code&type=Date" width="600" />
|
|
13
|
+
</picture>
|
|
14
|
+
</a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
<p align="center">
|
|
18
|
+
<img src="assets/clawd-hero.jpeg" alt="Claw" width="300" />
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<p align="center">
|
|
22
|
+
<strong>Better Harness Tools, not merely storing the archive of leaked Claude Code</strong>
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
<p align="center">
|
|
26
|
+
<a href="https://github.com/sponsors/instructkr"><img src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?logo=github&style=for-the-badge" alt="Sponsor on GitHub" /></a>
|
|
27
|
+
</p>
|
|
28
|
+
|
|
29
|
+
> [!IMPORTANT]
|
|
30
|
+
> **Rust port is now in progress** on the [`dev/rust`](https://github.com/instructkr/claw-code/tree/dev/rust) branch and is expected to be merged into main today. The Rust implementation aims to deliver a faster, memory-safe harness runtime. Stay tuned — this will be the definitive version of the project.
|
|
31
|
+
|
|
32
|
+
> If you find this work useful, consider [sponsoring @instructkr on GitHub](https://github.com/sponsors/instructkr) to support continued open-source harness engineering research.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Backstory
|
|
37
|
+
|
|
38
|
+
At 4 AM on March 31, 2026, I woke up to my phone blowing up with notifications. The Claude Code source had been exposed, and the entire dev community was in a frenzy. My girlfriend in Korea was genuinely worried I might face legal action from Anthropic just for having the code on my machine — so I did what any engineer would do under pressure: I sat down, ported the core features to Python from scratch, and pushed it before the sun came up.
|
|
39
|
+
|
|
40
|
+
The whole thing was orchestrated end-to-end using [oh-my-codex (OmX)](https://github.com/Yeachan-Heo/oh-my-codex) by [@bellman_ych](https://x.com/bellman_ych) — a workflow layer built on top of OpenAI's Codex ([@OpenAIDevs](https://x.com/OpenAIDevs)). I used `$team` mode for parallel code review and `$ralph` mode for persistent execution loops with architect-level verification. The entire porting session — from reading the original harness structure to producing a working Python tree with tests — was driven through OmX orchestration.
|
|
41
|
+
|
|
42
|
+
The result is a clean-room Python rewrite that captures the architectural patterns of Claude Code's agent harness without copying any proprietary source. I'm now actively collaborating with [@bellman_ych](https://x.com/bellman_ych) — the creator of OmX himself — to push this further. The basic Python foundation is already in place and functional, but we're just getting started. **Stay tuned — a much more capable version is on the way.**
|
|
43
|
+
|
|
44
|
+
https://github.com/instructkr/claw-code
|
|
45
|
+
|
|
46
|
+

|
|
47
|
+
|
|
48
|
+
## The Creators Featured in Wall Street Journal For Avid Claude Code Fans
|
|
49
|
+
|
|
50
|
+
I've been deeply interested in **harness engineering** — studying how agent systems wire tools, orchestrate tasks, and manage runtime context. This isn't a sudden thing. The Wall Street Journal featured my work earlier this month, documenting how I've been one of the most active power users exploring these systems:
|
|
51
|
+
|
|
52
|
+
> AI startup worker Sigrid Jin, who attended the Seoul dinner, single-handedly used 25 billion of Claude Code tokens last year. At the time, usage limits were looser, allowing early enthusiasts to reach tens of billions of tokens at a very low cost.
|
|
53
|
+
>
|
|
54
|
+
> Despite his countless hours with Claude Code, Jin isn't faithful to any one AI lab. The tools available have different strengths and weaknesses, he said. Codex is better at reasoning, while Claude Code generates cleaner, more shareable code.
|
|
55
|
+
>
|
|
56
|
+
> Jin flew to San Francisco in February for Claude Code's first birthday party, where attendees waited in line to compare notes with Cherny. The crowd included a practicing cardiologist from Belgium who had built an app to help patients navigate care, and a California lawyer who made a tool for automating building permit approvals using Claude Code.
|
|
57
|
+
>
|
|
58
|
+
> "It was basically like a sharing party," Jin said. "There were lawyers, there were doctors, there were dentists. They did not have software engineering backgrounds."
|
|
59
|
+
>
|
|
60
|
+
> — *The Wall Street Journal*, March 21, 2026, [*"The Trillion Dollar Race to Automate Our Entire Lives"*](https://lnkd.in/gs9td3qd)
|
|
61
|
+
|
|
62
|
+

|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Porting Status
|
|
67
|
+
|
|
68
|
+
The main source tree is now Python-first.
|
|
69
|
+
|
|
70
|
+
- `src/` contains the active Python porting workspace
|
|
71
|
+
- `tests/` verifies the current Python workspace
|
|
72
|
+
- the exposed snapshot is no longer part of the tracked repository state
|
|
73
|
+
|
|
74
|
+
The current Python workspace is not yet a complete one-to-one replacement for the original system, but the primary implementation surface is now Python.
|
|
75
|
+
|
|
76
|
+
## Why this rewrite exists
|
|
77
|
+
|
|
78
|
+
I originally studied the exposed codebase to understand its harness, tool wiring, and agent workflow. After spending more time with the legal and ethical questions—and after reading the essay linked below—I did not want the exposed snapshot itself to remain the main tracked source tree.
|
|
79
|
+
|
|
80
|
+
This repository now focuses on Python porting work instead.
|
|
81
|
+
|
|
82
|
+
## Repository Layout
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
.
|
|
86
|
+
├── src/ # Python porting workspace
|
|
87
|
+
│ ├── __init__.py
|
|
88
|
+
│ ├── commands.py
|
|
89
|
+
│ ├── main.py
|
|
90
|
+
│ ├── models.py
|
|
91
|
+
│ ├── port_manifest.py
|
|
92
|
+
│ ├── query_engine.py
|
|
93
|
+
│ ├── task.py
|
|
94
|
+
│ └── tools.py
|
|
95
|
+
├── tests/ # Python verification
|
|
96
|
+
├── assets/omx/ # OmX workflow screenshots
|
|
97
|
+
├── 2026-03-09-is-legal-the-same-as-legitimate-ai-reimplementation-and-the-erosion-of-copyleft.md
|
|
98
|
+
└── README.md
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Python Workspace Overview
|
|
102
|
+
|
|
103
|
+
The new Python `src/` tree currently provides:
|
|
104
|
+
|
|
105
|
+
- **`port_manifest.py`** — summarizes the current Python workspace structure
|
|
106
|
+
- **`models.py`** — dataclasses for subsystems, modules, and backlog state
|
|
107
|
+
- **`commands.py`** — Python-side command port metadata
|
|
108
|
+
- **`tools.py`** — Python-side tool port metadata
|
|
109
|
+
- **`query_engine.py`** — renders a Python porting summary from the active workspace
|
|
110
|
+
- **`main.py`** — a CLI entrypoint for manifest and summary output
|
|
111
|
+
|
|
112
|
+
## Quickstart
|
|
113
|
+
|
|
114
|
+
Render the Python porting summary:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
python3 -m src.main summary
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Print the current Python workspace manifest:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
python3 -m src.main manifest
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
List the current Python modules:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
python3 -m src.main subsystems --limit 16
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Run verification:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
python3 -m unittest discover -s tests -v
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Run the parity audit against the local ignored archive (when present):
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
python3 -m src.main parity-audit
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Inspect mirrored command/tool inventories:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
python3 -m src.main commands --limit 10
|
|
148
|
+
python3 -m src.main tools --limit 10
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Current Parity Checkpoint
|
|
152
|
+
|
|
153
|
+
The port now mirrors the archived root-entry file surface, top-level subsystem names, and command/tool inventories much more closely than before. However, it is **not yet** a full runtime-equivalent replacement for the original TypeScript system; the Python tree still contains fewer executable runtime slices than the archived source.
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
## Built with `oh-my-codex`
|
|
157
|
+
|
|
158
|
+
The restructuring and documentation work on this repository was AI-assisted and orchestrated with Yeachan Heo's [oh-my-codex (OmX)](https://github.com/Yeachan-Heo/oh-my-codex), layered on top of Codex.
|
|
159
|
+
|
|
160
|
+
- **`$team` mode:** used for coordinated parallel review and architectural feedback
|
|
161
|
+
- **`$ralph` mode:** used for persistent execution, verification, and completion discipline
|
|
162
|
+
- **Codex-driven workflow:** used to turn the main `src/` tree into a Python-first porting workspace
|
|
163
|
+
|
|
164
|
+
### OmX workflow screenshots
|
|
165
|
+
|
|
166
|
+

|
|
167
|
+
|
|
168
|
+
*Ralph/team orchestration view while the README and essay context were being reviewed in terminal panes.*
|
|
169
|
+
|
|
170
|
+

|
|
171
|
+
|
|
172
|
+
*Split-pane review and verification flow during the final README wording pass.*
|
|
173
|
+
|
|
174
|
+
## Community
|
|
175
|
+
|
|
176
|
+
<p align="center">
|
|
177
|
+
<a href="https://instruct.kr/"><img src="assets/instructkr.png" alt="instructkr" width="400" /></a>
|
|
178
|
+
</p>
|
|
179
|
+
|
|
180
|
+
Join the [**instructkr Discord**](https://instruct.kr/) — the best Korean language model community. Come chat about LLMs, harness engineering, agent workflows, and everything in between.
|
|
181
|
+
|
|
182
|
+
[](https://instruct.kr/)
|
|
183
|
+
|
|
184
|
+
## Star History
|
|
185
|
+
|
|
186
|
+
See the chart at the top of this README.
|
|
187
|
+
|
|
188
|
+
## Ownership / Affiliation Disclaimer
|
|
189
|
+
|
|
190
|
+
- This repository does **not** claim ownership of the original Claude Code source material.
|
|
191
|
+
- This repository is **not affiliated with, endorsed by, or maintained by Anthropic**.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=45", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
[project]
|
|
5
|
+
name = "grokforge"
|
|
6
|
+
version = "0.1.0"
|
|
7
|
+
description = "GrokForge — Autonomous Feature Shipping with ReAct 2.0"
|
|
8
|
+
readme = "README.md"
|
|
9
|
+
requires-python = ">=3.10"
|
|
10
|
+
dependencies = [
|
|
11
|
+
"typer>=0.9.0",
|
|
12
|
+
"rich>=13.0.0",
|
|
13
|
+
]
|
|
14
|
+
[project.scripts]
|
|
15
|
+
grokforge = "main:cli"
|
|
16
|
+
[tool.setuptools.packages.find]
|
|
17
|
+
where = ["src"]
|
|
18
|
+
include = ["*"]
|
|
19
|
+
[tool.setuptools.package-dir]
|
|
20
|
+
"" = "src"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Python package placeholder for the archived `assistant` subsystem."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
SNAPSHOT_PATH = Path(__file__).resolve().parent.parent / 'reference_data' / 'subsystems' / 'assistant.json'
|
|
9
|
+
_SNAPSHOT = json.loads(SNAPSHOT_PATH.read_text())
|
|
10
|
+
|
|
11
|
+
ARCHIVE_NAME = _SNAPSHOT['archive_name']
|
|
12
|
+
MODULE_COUNT = _SNAPSHOT['module_count']
|
|
13
|
+
SAMPLE_FILES = tuple(_SNAPSHOT['sample_files'])
|
|
14
|
+
PORTING_NOTE = f"Python placeholder package for '{ARCHIVE_NAME}' with {MODULE_COUNT} archived module references."
|
|
15
|
+
|
|
16
|
+
__all__ = ['ARCHIVE_NAME', 'MODULE_COUNT', 'PORTING_NOTE', 'SAMPLE_FILES']
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Python package placeholder for the archived `bootstrap` subsystem."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
SNAPSHOT_PATH = Path(__file__).resolve().parent.parent / 'reference_data' / 'subsystems' / 'bootstrap.json'
|
|
9
|
+
_SNAPSHOT = json.loads(SNAPSHOT_PATH.read_text())
|
|
10
|
+
|
|
11
|
+
ARCHIVE_NAME = _SNAPSHOT['archive_name']
|
|
12
|
+
MODULE_COUNT = _SNAPSHOT['module_count']
|
|
13
|
+
SAMPLE_FILES = tuple(_SNAPSHOT['sample_files'])
|
|
14
|
+
PORTING_NOTE = f"Python placeholder package for '{ARCHIVE_NAME}' with {MODULE_COUNT} archived module references."
|
|
15
|
+
|
|
16
|
+
__all__ = ['ARCHIVE_NAME', 'MODULE_COUNT', 'PORTING_NOTE', 'SAMPLE_FILES']
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Python package placeholder for the archived `bridge` subsystem."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
SNAPSHOT_PATH = Path(__file__).resolve().parent.parent / 'reference_data' / 'subsystems' / 'bridge.json'
|
|
9
|
+
_SNAPSHOT = json.loads(SNAPSHOT_PATH.read_text())
|
|
10
|
+
|
|
11
|
+
ARCHIVE_NAME = _SNAPSHOT['archive_name']
|
|
12
|
+
MODULE_COUNT = _SNAPSHOT['module_count']
|
|
13
|
+
SAMPLE_FILES = tuple(_SNAPSHOT['sample_files'])
|
|
14
|
+
PORTING_NOTE = f"Python placeholder package for '{ARCHIVE_NAME}' with {MODULE_COUNT} archived module references."
|
|
15
|
+
|
|
16
|
+
__all__ = ['ARCHIVE_NAME', 'MODULE_COUNT', 'PORTING_NOTE', 'SAMPLE_FILES']
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Python package placeholder for the archived `buddy` subsystem."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
SNAPSHOT_PATH = Path(__file__).resolve().parent.parent / 'reference_data' / 'subsystems' / 'buddy.json'
|
|
9
|
+
_SNAPSHOT = json.loads(SNAPSHOT_PATH.read_text())
|
|
10
|
+
|
|
11
|
+
ARCHIVE_NAME = _SNAPSHOT['archive_name']
|
|
12
|
+
MODULE_COUNT = _SNAPSHOT['module_count']
|
|
13
|
+
SAMPLE_FILES = tuple(_SNAPSHOT['sample_files'])
|
|
14
|
+
PORTING_NOTE = f"Python placeholder package for '{ARCHIVE_NAME}' with {MODULE_COUNT} archived module references."
|
|
15
|
+
|
|
16
|
+
__all__ = ['ARCHIVE_NAME', 'MODULE_COUNT', 'PORTING_NOTE', 'SAMPLE_FILES']
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Python package placeholder for the archived `cli` subsystem."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
SNAPSHOT_PATH = Path(__file__).resolve().parent.parent / 'reference_data' / 'subsystems' / 'cli.json'
|
|
9
|
+
_SNAPSHOT = json.loads(SNAPSHOT_PATH.read_text())
|
|
10
|
+
|
|
11
|
+
ARCHIVE_NAME = _SNAPSHOT['archive_name']
|
|
12
|
+
MODULE_COUNT = _SNAPSHOT['module_count']
|
|
13
|
+
SAMPLE_FILES = tuple(_SNAPSHOT['sample_files'])
|
|
14
|
+
PORTING_NOTE = f"Python placeholder package for '{ARCHIVE_NAME}' with {MODULE_COUNT} archived module references."
|
|
15
|
+
|
|
16
|
+
__all__ = ['ARCHIVE_NAME', 'MODULE_COUNT', 'PORTING_NOTE', 'SAMPLE_FILES']
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# GrokDream commands package — v41 comprehensive permanent stubs (full ported Claude compatibility + GrokForge ReAct)
|
|
2
|
+
# This stabilizes the entire import chain (system_init.py, runtime.py, execution_registry.py, __init__.py, react/loop.py) forever
|
|
3
|
+
# No scope limits — future ReAct commands can be added dynamically without breaking anything
|
|
4
|
+
__all__ = [
|
|
5
|
+
"PORTED_COMMANDS",
|
|
6
|
+
"execute_command",
|
|
7
|
+
"build_command_backlog",
|
|
8
|
+
"built_in_command_names",
|
|
9
|
+
"get_commands",
|
|
10
|
+
"get_all_commands", # common in ported ReAct loops
|
|
11
|
+
"build_command_registry", # common in ported ReAct loops
|
|
12
|
+
]
|
|
13
|
+
PORTED_COMMANDS = []
|
|
14
|
+
def execute_command(name: str, prompt: str):
|
|
15
|
+
"""v41 stub — returns object with .message so MirroredCommand.execute works."""
|
|
16
|
+
return type("Result", (), {"message": f"[Command {name}] Executed: {prompt[:80]}..."})()
|
|
17
|
+
def build_command_backlog():
|
|
18
|
+
"""v41 stub — compatible with ported query_engine."""
|
|
19
|
+
return type("Backlog", (), {"summary_lines": lambda self: ["✅ GrokForge commands active (stubbed)"]})()
|
|
20
|
+
# NEW: required by system_init.py
|
|
21
|
+
def built_in_command_names():
|
|
22
|
+
"""v41 stub — returns list of built-in command names for len(built_in_command_names())"""
|
|
23
|
+
return ["grokforge", "dream", "ship", "status", "help", "list_tools", "list_commands"]
|
|
24
|
+
def get_commands():
|
|
25
|
+
"""v41 stub — returns list of command entries so len(commands) works in system_init.py"""
|
|
26
|
+
return [] # minimal list; expand dynamically later with real command objects
|
|
27
|
+
# Extra foresight stubs for full ported compatibility
|
|
28
|
+
def get_all_commands():
|
|
29
|
+
"""v41 stub — placeholder for ReAct command discovery."""
|
|
30
|
+
return []
|
|
31
|
+
def build_command_registry():
|
|
32
|
+
"""v41 stub — placeholder for command registry (prevents future cascade)."""
|
|
33
|
+
return type("Registry", (), {"commands": []})()
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Python package placeholder for the archived `components` subsystem."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
SNAPSHOT_PATH = Path(__file__).resolve().parent.parent / 'reference_data' / 'subsystems' / 'components.json'
|
|
9
|
+
_SNAPSHOT = json.loads(SNAPSHOT_PATH.read_text())
|
|
10
|
+
|
|
11
|
+
ARCHIVE_NAME = _SNAPSHOT['archive_name']
|
|
12
|
+
MODULE_COUNT = _SNAPSHOT['module_count']
|
|
13
|
+
SAMPLE_FILES = tuple(_SNAPSHOT['sample_files'])
|
|
14
|
+
PORTING_NOTE = f"Python placeholder package for '{ARCHIVE_NAME}' with {MODULE_COUNT} archived module references."
|
|
15
|
+
|
|
16
|
+
__all__ = ['ARCHIVE_NAME', 'MODULE_COUNT', 'PORTING_NOTE', 'SAMPLE_FILES']
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Python package placeholder for the archived `constants` subsystem."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
SNAPSHOT_PATH = Path(__file__).resolve().parent.parent / 'reference_data' / 'subsystems' / 'constants.json'
|
|
9
|
+
_SNAPSHOT = json.loads(SNAPSHOT_PATH.read_text())
|
|
10
|
+
|
|
11
|
+
ARCHIVE_NAME = _SNAPSHOT['archive_name']
|
|
12
|
+
MODULE_COUNT = _SNAPSHOT['module_count']
|
|
13
|
+
SAMPLE_FILES = tuple(_SNAPSHOT['sample_files'])
|
|
14
|
+
PORTING_NOTE = f"Python placeholder package for '{ARCHIVE_NAME}' with {MODULE_COUNT} archived module references."
|
|
15
|
+
|
|
16
|
+
__all__ = ['ARCHIVE_NAME', 'MODULE_COUNT', 'PORTING_NOTE', 'SAMPLE_FILES']
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Python package placeholder for the archived `coordinator` subsystem."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
SNAPSHOT_PATH = Path(__file__).resolve().parent.parent / 'reference_data' / 'subsystems' / 'coordinator.json'
|
|
9
|
+
_SNAPSHOT = json.loads(SNAPSHOT_PATH.read_text())
|
|
10
|
+
|
|
11
|
+
ARCHIVE_NAME = _SNAPSHOT['archive_name']
|
|
12
|
+
MODULE_COUNT = _SNAPSHOT['module_count']
|
|
13
|
+
SAMPLE_FILES = tuple(_SNAPSHOT['sample_files'])
|
|
14
|
+
PORTING_NOTE = f"Python placeholder package for '{ARCHIVE_NAME}' with {MODULE_COUNT} archived module references."
|
|
15
|
+
|
|
16
|
+
__all__ = ['ARCHIVE_NAME', 'MODULE_COUNT', 'PORTING_NOTE', 'SAMPLE_FILES']
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Python package placeholder for the archived `entrypoints` subsystem."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
SNAPSHOT_PATH = Path(__file__).resolve().parent.parent / 'reference_data' / 'subsystems' / 'entrypoints.json'
|
|
9
|
+
_SNAPSHOT = json.loads(SNAPSHOT_PATH.read_text())
|
|
10
|
+
|
|
11
|
+
ARCHIVE_NAME = _SNAPSHOT['archive_name']
|
|
12
|
+
MODULE_COUNT = _SNAPSHOT['module_count']
|
|
13
|
+
SAMPLE_FILES = tuple(_SNAPSHOT['sample_files'])
|
|
14
|
+
PORTING_NOTE = f"Python placeholder package for '{ARCHIVE_NAME}' with {MODULE_COUNT} archived module references."
|
|
15
|
+
|
|
16
|
+
__all__ = ['ARCHIVE_NAME', 'MODULE_COUNT', 'PORTING_NOTE', 'SAMPLE_FILES']
|