@jbaehova/onthego 0.1.1 → 0.1.3
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.
- package/README.md +179 -36
- package/npm/vendor/onthego-darwin-arm64 +0 -0
- package/npm/vendor/onthego-linux-amd64 +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,20 +1,68 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">ONTHEGO</h1>
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>Carry the work. Keep the context.</strong>
|
|
5
|
+
</p>
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
<p align="center">
|
|
8
|
+
<em>Secure, project-scoped AI agent handoffs from your local Git workspace to a Daytona sandbox.</em>
|
|
9
|
+
</p>
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
<p align="center">
|
|
12
|
+
<img alt="npm version" src="https://img.shields.io/npm/v/%40jbaehova%2Fonthego?style=flat-square&logo=npm&logoColor=white&color=CB3837">
|
|
13
|
+
<img alt="Node 18+" src="https://img.shields.io/badge/Node-18%2B-43853D?style=flat-square&logo=node.js&logoColor=white">
|
|
14
|
+
<img alt="Go 1.25.4+" src="https://img.shields.io/badge/Go-1.25.4%2B-00ADD8?style=flat-square&logo=go&logoColor=white">
|
|
15
|
+
<img alt="macOS arm64 and Linux x64" src="https://img.shields.io/badge/Platform-macOS_arm64_%7C_Linux_x64-334155?style=flat-square">
|
|
16
|
+
<a href="LICENSE"><img alt="License MIT" src="https://img.shields.io/badge/License-MIT-C5A800?style=flat-square"></a>
|
|
17
|
+
</p>
|
|
8
18
|
|
|
9
|
-
|
|
19
|
+
<p align="center">
|
|
20
|
+
<img src="assets/onthego-banner.webp" alt="ONTHEGO carrying secure agent context from a local workspace to a cloud sandbox" width="88%">
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
Your repository moves easily. Agent memory does not.
|
|
24
|
+
|
|
25
|
+
ONTHEGO finds the Codex, Cursor, Hermes, and Claude sessions that belong to the current Git project, removes common secrets on your machine, creates a focused handoff, and sends it to an isolated Daytona workload. Run status is synchronized through a lightweight control plane. Results come back only after their SHA-256 digest matches the remote receipt.
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
local project -> redact -> HANDOFF.md -> Daytona -> verify -> local result
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## What It Does
|
|
32
|
+
|
|
33
|
+
- Discovers every supported agent session associated with the current Git repository.
|
|
34
|
+
- Redacts tokens, authorization headers, private keys, and matching secret assignments before transfer.
|
|
35
|
+
- Generates a redacted context envelope and human-readable `HANDOFF.md`.
|
|
36
|
+
- Starts the default `agent-sync` workload in Daytona with one command.
|
|
37
|
+
- Synchronizes run state, redacted logs, and summaries across authenticated devices.
|
|
38
|
+
- Uses GPT-5.6 Luna with high reasoning effort to turn current state into a concise status update.
|
|
39
|
+
- Downloads an artifact only after its hash matches the remote run receipt.
|
|
40
|
+
|
|
41
|
+
## Quick Start
|
|
42
|
+
|
|
43
|
+
Install the CLI:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
10
46
|
npm install -g @jbaehova/onthego
|
|
11
47
|
```
|
|
12
48
|
|
|
13
|
-
|
|
49
|
+
Create a private `.env` at the Git root:
|
|
50
|
+
|
|
51
|
+
```dotenv
|
|
52
|
+
DAYTONA_API_KEY=...
|
|
53
|
+
ONTHEGO_CONTROL_PLANE_URL=https://your-control-plane.example.com
|
|
54
|
+
ONTHEGO_CONTROL_PLANE_TLS_SHA256=...
|
|
55
|
+
ONTHEGO_LOGIN_BOOTSTRAP_TOKEN=...
|
|
56
|
+
|
|
57
|
+
# Optional. Enables the LLM summary in `onthego status`.
|
|
58
|
+
OPENAI_API_KEY=...
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Lock down the file, then run the five-command flow:
|
|
14
62
|
|
|
15
|
-
|
|
63
|
+
```bash
|
|
64
|
+
chmod 600 .env
|
|
16
65
|
|
|
17
|
-
```sh
|
|
18
66
|
onthego init
|
|
19
67
|
onthego login
|
|
20
68
|
onthego pass
|
|
@@ -22,48 +70,143 @@ onthego status
|
|
|
22
70
|
onthego pull
|
|
23
71
|
```
|
|
24
72
|
|
|
25
|
-
|
|
73
|
+
That is the complete Phase 1 workflow. You do not choose an agent or paste a session ID. `onthego pass` resolves the current Git root and collects the matching sessions automatically.
|
|
74
|
+
|
|
75
|
+
> [!NOTE]
|
|
76
|
+
> The current release expects a Daytona account and a deployed ONTHEGO control plane. The control plane server is included in this repository. See [Architecture](docs/architecture.md) and the [Contabo operations guide](docs/contabo.md).
|
|
26
77
|
|
|
27
|
-
|
|
78
|
+
## The Five Commands
|
|
28
79
|
|
|
29
|
-
|
|
80
|
+
| Command | Purpose |
|
|
81
|
+
| --- | --- |
|
|
82
|
+
| `onthego init` | Register the current Git repository, create its stable `.onthego.yaml` identity, and add local-only paths to `.gitignore`. |
|
|
83
|
+
| `onthego login` | Authenticate this device with the ONTHEGO control plane. |
|
|
84
|
+
| `onthego pass` | Collect project sessions, redact them locally, create the handoff, and start `agent-sync` in Daytona. |
|
|
85
|
+
| `onthego status` | Refresh the latest Daytona run and redacted logs, synchronize state, and generate a concise summary. |
|
|
86
|
+
| `onthego pull` | Download the latest result after receipt and SHA-256 verification. |
|
|
30
87
|
|
|
31
|
-
|
|
88
|
+
Every public command supports schema-versioned JSON output:
|
|
32
89
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
- `ONTHEGO_LOGIN_BOOTSTRAP_TOKEN`
|
|
38
|
-
- `ONTHEGO_CONTROL_PLANE_SIGNING_KEY`
|
|
39
|
-
- `CONTABO_VPS_IP_ADDRESS`
|
|
40
|
-
- `CONTABO_VPS_DEFAULT_USER`
|
|
41
|
-
- `CONTABO_VPS_PASSWORD`
|
|
90
|
+
```bash
|
|
91
|
+
onthego status --json
|
|
92
|
+
onthego pull --output ./handoff-result.md --json
|
|
93
|
+
```
|
|
42
94
|
|
|
43
|
-
|
|
95
|
+
## How It Works
|
|
96
|
+
|
|
97
|
+
```mermaid
|
|
98
|
+
flowchart LR
|
|
99
|
+
A[Codex] --> E[Project session discovery]
|
|
100
|
+
B[Cursor] --> E
|
|
101
|
+
C[Hermes] --> E
|
|
102
|
+
D[Claude] --> E
|
|
103
|
+
E --> F[Local redaction]
|
|
104
|
+
F --> G[Context envelope and HANDOFF.md]
|
|
105
|
+
G --> H[Daytona agent-sync]
|
|
106
|
+
H --> I[Redacted logs and run receipt]
|
|
107
|
+
I --> J[ONTHEGO control plane]
|
|
108
|
+
J --> K[Authenticated devices]
|
|
109
|
+
I --> L[SHA-256 verified pull]
|
|
110
|
+
```
|
|
44
111
|
|
|
45
|
-
|
|
112
|
+
### 1. Scope by project
|
|
46
113
|
|
|
47
|
-
|
|
48
|
-
- Redaction removes common tokens, authorization headers, private keys, and matching secret assignments before transfer.
|
|
49
|
-
- The Contabo client pins the server certificate SHA-256 fingerprint.
|
|
50
|
-
- Control plane state updates use authenticated generation checks.
|
|
51
|
-
- Daytona result files are accepted only when the remote receipt contains a matching SHA-256 hash.
|
|
52
|
-
- Portable internal snapshots use age X25519 encryption and Ed25519 signatures.
|
|
114
|
+
ONTHEGO uses the Git root as the trust and discovery boundary. It scans the local storage used by Codex, Cursor, Hermes, and Claude, then keeps only sessions associated with that project.
|
|
53
115
|
|
|
54
|
-
|
|
116
|
+
### 2. Redact before transfer
|
|
55
117
|
|
|
56
|
-
|
|
118
|
+
Raw sessions stay local. Before an envelope leaves the machine, ONTHEGO filters common API keys, bearer tokens, private keys, secret assignments, and opaque encrypted agent payloads. The envelope records source hashes and byte ranges so the handoff remains auditable without exposing local paths.
|
|
57
119
|
|
|
58
|
-
|
|
120
|
+
### 3. Run in isolation
|
|
121
|
+
|
|
122
|
+
The official Daytona Go SDK creates or selects a sandbox, uploads the redacted context, and starts an ONTHEGO-owned process session. The default CPU-only `agent-sync` workload returns `HANDOFF.md` and can be replaced with a project-defined workload in `.onthego.yaml`.
|
|
123
|
+
|
|
124
|
+
### 4. Resume with proof
|
|
125
|
+
|
|
126
|
+
`onthego status` combines local Git state with remote run state. `onthego pull` refuses results with a missing or mismatched SHA-256 receipt, so an unverified artifact never becomes the local handoff.
|
|
127
|
+
|
|
128
|
+
## Security Model
|
|
129
|
+
|
|
130
|
+
| Boundary | Protection |
|
|
131
|
+
| --- | --- |
|
|
132
|
+
| Project | Session discovery is limited to the current Git repository. |
|
|
133
|
+
| Secrets | The root `.env` must not be accessible by group or other users and is never tracked. |
|
|
134
|
+
| Transfer | Session content is redacted locally before upload. |
|
|
135
|
+
| Control plane | TLS is pinned by certificate SHA-256 fingerprint. |
|
|
136
|
+
| State | Authenticated generation checks reject stale writes. |
|
|
137
|
+
| Results | Remote artifacts are accepted only when their SHA-256 hash matches the receipt. |
|
|
138
|
+
| Snapshots | Portable `.otg` snapshots use age X25519 encryption and Ed25519 signatures. |
|
|
59
139
|
|
|
60
|
-
|
|
140
|
+
`onthego init` always keeps `AGENTS.md`, `.agents/`, `.env`, `.onthego.local/`, `HANDOFF.md`, and `*.otg` out of Git. Device login sessions are stored outside the repository with `0600` permissions.
|
|
61
141
|
|
|
62
|
-
|
|
142
|
+
## Project Configuration
|
|
143
|
+
|
|
144
|
+
`onthego init` creates a safe, trackable `.onthego.yaml`. It contains the project identity and workload policy, never secret values. Re-running `init` preserves the existing project ID.
|
|
145
|
+
|
|
146
|
+
The default workload is deliberately small:
|
|
147
|
+
|
|
148
|
+
```yaml
|
|
149
|
+
workloads:
|
|
150
|
+
agent-sync:
|
|
151
|
+
kind: agent
|
|
152
|
+
image: debian:bookworm-slim
|
|
153
|
+
gpu_count: 0
|
|
154
|
+
argv:
|
|
155
|
+
- /bin/sh
|
|
156
|
+
- -lc
|
|
157
|
+
- cp ../context/HANDOFF.md ./HANDOFF.md
|
|
158
|
+
output_path: HANDOFF.md
|
|
159
|
+
timeout_seconds: 600
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
The CLI reads `.env` from the current directory up to the Git root. Existing process environment values take precedence over file values. Daytona also accepts `DAYTONA_JWT_TOKEN` as an alternative to `DAYTONA_API_KEY`.
|
|
163
|
+
|
|
164
|
+
## Platform Support
|
|
165
|
+
|
|
166
|
+
The npm package currently ships prebuilt binaries for:
|
|
167
|
+
|
|
168
|
+
- macOS on Apple silicon (`darwin-arm64`)
|
|
169
|
+
- Linux on x86-64 (`linux-x64`)
|
|
170
|
+
|
|
171
|
+
Node.js 18 or newer is required for the npm launcher. Building from source requires Go 1.25.4 or newer.
|
|
172
|
+
|
|
173
|
+
## Development
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
git clone https://github.com/jbaehova/onthego.git
|
|
177
|
+
cd onthego
|
|
63
178
|
make check
|
|
64
179
|
make build
|
|
65
180
|
```
|
|
66
181
|
|
|
67
|
-
|
|
182
|
+
Useful project commands:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
make test
|
|
186
|
+
./scripts/demo.sh
|
|
187
|
+
go run ./cmd/onthego --help
|
|
188
|
+
go run ./cmd/onthego-server
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
The release workflow tests and vets the Go code, builds static Linux amd64 and macOS arm64 binaries, scans the npm package for local or secret files, publishes with npm provenance, and attaches checksummed binaries to the GitHub release.
|
|
192
|
+
|
|
193
|
+
## Repository Layout
|
|
194
|
+
|
|
195
|
+
```text
|
|
196
|
+
cmd/ CLI and control plane entry points
|
|
197
|
+
internal/ capture, redaction, transport, state, and verification
|
|
198
|
+
npm/ cross-platform npm launcher and packaged binaries
|
|
199
|
+
deploy/contabo/ hardened systemd service for the control plane
|
|
200
|
+
docs/ architecture, demo, pitch, and progress notes
|
|
201
|
+
scripts/ local demo workflow
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Roadmap
|
|
205
|
+
|
|
206
|
+
The five-command agent handoff is the supported Phase 1 contract. GPU fine-tuning, GPU model serving, and Hugging Face model and dataset connectors are active backlog items and are not presented as production features yet.
|
|
207
|
+
|
|
208
|
+
Follow the implementation record in [docs/progress.md](docs/progress.md).
|
|
209
|
+
|
|
210
|
+
## License
|
|
68
211
|
|
|
69
|
-
|
|
212
|
+
MIT. See [LICENSE](LICENSE).
|
|
Binary file
|
|
Binary file
|