@jbaehova/onthego 0.1.2 → 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 CHANGED
@@ -1,20 +1,68 @@
1
- # ONTHEGO
1
+ <h1 align="center">ONTHEGO</h1>
2
2
 
3
- ONTHEGO carries project-scoped agent sessions, a redacted handoff, execution logs, and work state between a local Git workspace and a Daytona sandbox. A small control plane on Contabo keeps the latest state available across local machines. `status` turns the synchronized state into a concise update with GPT-5.6 Luna using high reasoning effort.
3
+ <p align="center">
4
+ <strong>Carry the work. Keep the context.</strong>
5
+ </p>
4
6
 
5
- ## Install
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
- The npm package currently uses the `@jbaehova` scope because the unscoped `onthego` name is owned by another npm account.
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
- ```sh
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
- The installed command is `onthego`.
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
- ## Phase 1 commands
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
- `init` turns the current Git repository into an ONTHEGO project. It creates the safe, trackable `.onthego.yaml` project identity and adds local secret and state patterns to `.gitignore`. Re-running it preserves the existing project identity. `login` authenticates this device with the ONTHEGO control plane. `pass` automatically finds every session for the current Git project from Codex, Cursor, Hermes, and Claude. It redacts all detected sessions, generates `HANDOFF.md`, and starts the default `agent-sync` workload in Daytona. No agent or session option is required. `status` refreshes the latest Daytona run and redacted logs, synchronizes them through the control plane, and generates the LLM summary. `pull` downloads the latest result only after its SHA-256 hash matches the remote receipt.
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
- Run `onthego init` once after cloning or creating a repository. The Phase 1 pass flow is always `onthego pass`.
78
+ ## The Five Commands
28
79
 
29
- ## Secrets
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
- All repository secret values live in one root `.env`. ONTHEGO searches from the working directory to the Git root and refuses a file readable by group or other users. The current integration reads these keys:
88
+ Every public command supports schema-versioned JSON output:
32
89
 
33
- - `DAYTONA_API_KEY`
34
- - `OPENAI_API_KEY`
35
- - `ONTHEGO_CONTROL_PLANE_URL`
36
- - `ONTHEGO_CONTROL_PLANE_TLS_SHA256`
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
- The `.env` file, `AGENTS.md`, `.agents/`, local state, npm credentials, archives, build output, logs, and editor metadata are ignored by Git. The login session is stored outside the repository with permission `0600`.
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
- ## Security model
112
+ ### 1. Scope by project
46
113
 
47
- - Context selection accepts only Codex, Cursor, Hermes, and Claude sessions associated with the current Git project.
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
- ## Release
116
+ ### 2. Redact before transfer
55
117
 
56
- GitHub Actions tests the Go code, builds static Linux amd64 and macOS arm64 binaries, assembles the npm package, scans the release tree for local or secret files, publishes to npm, and attaches checksummed binaries to the GitHub release.
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
- ## Development
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
- Go 1.25.4 or newer and Node.js 18 or newer are required.
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
- ```sh
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
- GPU fine-tuning, GPU model serving, and the Hugging Face connector are backlog items. Their internal experiments are not part of the Phase 1 command contract.
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
- See [docs/architecture.md](docs/architecture.md) and [docs/progress.md](docs/progress.md) for the implementation record.
212
+ MIT. See [LICENSE](LICENSE).
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbaehova/onthego",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Carry agent context and work between local projects and Daytona sandboxes",
5
5
  "license": "MIT",
6
6
  "repository": {