@dp-pcs/ogp 0.2.0 → 0.2.1

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.
@@ -0,0 +1,296 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { getConfigDir, ensureConfigDir } from '../shared/config.js';
4
+ const PROJECTS_FILE = path.join(getConfigDir(), 'projects.json');
5
+ export function loadProjects() {
6
+ ensureConfigDir();
7
+ if (!fs.existsSync(PROJECTS_FILE)) {
8
+ return [];
9
+ }
10
+ const data = fs.readFileSync(PROJECTS_FILE, 'utf-8');
11
+ return JSON.parse(data);
12
+ }
13
+ export function saveProjects(projects) {
14
+ ensureConfigDir();
15
+ fs.writeFileSync(PROJECTS_FILE, JSON.stringify(projects, null, 2), 'utf-8');
16
+ }
17
+ export function createProject(id, name, description, metadata) {
18
+ const now = new Date().toISOString();
19
+ return {
20
+ id,
21
+ name,
22
+ description,
23
+ createdAt: now,
24
+ updatedAt: now,
25
+ members: [], // starts empty, members join via project.join intent
26
+ topics: [],
27
+ metadata
28
+ };
29
+ }
30
+ export function addProject(project) {
31
+ const projects = loadProjects();
32
+ const existing = projects.findIndex(p => p.id === project.id);
33
+ if (existing >= 0) {
34
+ projects[existing] = { ...project, updatedAt: new Date().toISOString() };
35
+ }
36
+ else {
37
+ projects.push(project);
38
+ }
39
+ saveProjects(projects);
40
+ }
41
+ export function getProject(projectId) {
42
+ const projects = loadProjects();
43
+ return projects.find(p => p.id === projectId) || null;
44
+ }
45
+ export function listProjects() {
46
+ return loadProjects();
47
+ }
48
+ export function deleteProject(projectId) {
49
+ const projects = loadProjects();
50
+ const index = projects.findIndex(p => p.id === projectId);
51
+ if (index === -1)
52
+ return false;
53
+ projects.splice(index, 1);
54
+ saveProjects(projects);
55
+ return true;
56
+ }
57
+ /**
58
+ * Join a project (add peer as member if not already present)
59
+ */
60
+ export function joinProject(projectId, peerId) {
61
+ const projects = loadProjects();
62
+ const project = projects.find(p => p.id === projectId);
63
+ if (!project)
64
+ return false;
65
+ if (!project.members.includes(peerId)) {
66
+ project.members.push(peerId);
67
+ project.updatedAt = new Date().toISOString();
68
+ saveProjects(projects);
69
+ }
70
+ return true;
71
+ }
72
+ /**
73
+ * Leave a project (remove peer from members)
74
+ */
75
+ export function leaveProject(projectId, peerId) {
76
+ const projects = loadProjects();
77
+ const project = projects.find(p => p.id === projectId);
78
+ if (!project)
79
+ return false;
80
+ const memberIndex = project.members.indexOf(peerId);
81
+ if (memberIndex >= 0) {
82
+ project.members.splice(memberIndex, 1);
83
+ project.updatedAt = new Date().toISOString();
84
+ saveProjects(projects);
85
+ }
86
+ return true;
87
+ }
88
+ /**
89
+ * Check if a peer is a member of a project
90
+ */
91
+ export function isProjectMember(projectId, peerId) {
92
+ const project = getProject(projectId);
93
+ return project ? project.members.includes(peerId) : false;
94
+ }
95
+ /**
96
+ * Add or update a topic in a project
97
+ */
98
+ export function ensureProjectTopic(projectId, topicName, description) {
99
+ const projects = loadProjects();
100
+ const project = projects.find(p => p.id === projectId);
101
+ if (!project)
102
+ return false;
103
+ let topic = project.topics.find(t => t.name === topicName);
104
+ if (!topic) {
105
+ topic = {
106
+ name: topicName,
107
+ description,
108
+ contributions: [],
109
+ lastUpdated: new Date().toISOString()
110
+ };
111
+ project.topics.push(topic);
112
+ }
113
+ else if (description && description !== topic.description) {
114
+ topic.description = description;
115
+ topic.lastUpdated = new Date().toISOString();
116
+ }
117
+ project.updatedAt = new Date().toISOString();
118
+ saveProjects(projects);
119
+ return true;
120
+ }
121
+ /**
122
+ * Add a contribution to a project topic
123
+ */
124
+ export function contributeToProject(projectId, topicName, authorId, summary, metadata) {
125
+ const projects = loadProjects();
126
+ const project = projects.find(p => p.id === projectId);
127
+ if (!project)
128
+ return null;
129
+ // Ensure the author is a project member
130
+ if (!project.members.includes(authorId)) {
131
+ return null;
132
+ }
133
+ // Ensure the topic exists
134
+ let topic = project.topics.find(t => t.name === topicName);
135
+ if (!topic) {
136
+ topic = {
137
+ name: topicName,
138
+ contributions: [],
139
+ lastUpdated: new Date().toISOString()
140
+ };
141
+ project.topics.push(topic);
142
+ }
143
+ // Create the contribution
144
+ const now = new Date().toISOString();
145
+ const contributionId = `${projectId}-${topicName}-${Date.now()}`;
146
+ const contribution = {
147
+ id: contributionId,
148
+ timestamp: now,
149
+ authorId,
150
+ topic: topicName,
151
+ summary,
152
+ metadata
153
+ };
154
+ topic.contributions.push(contribution);
155
+ topic.lastUpdated = now;
156
+ project.updatedAt = now;
157
+ saveProjects(projects);
158
+ return contributionId;
159
+ }
160
+ /**
161
+ * Get contributions for a specific topic across all projects
162
+ */
163
+ export function getTopicContributions(projectId, topicName, limit) {
164
+ const project = getProject(projectId);
165
+ if (!project)
166
+ return [];
167
+ let topicContributions = [];
168
+ // Handle both data formats: old flat format and new nested format
169
+ if (project.topics.length > 0 && typeof project.topics[0] === 'object') {
170
+ // New nested format: topics are objects with contributions
171
+ const topic = project.topics.find(t => t.name === topicName);
172
+ if (!topic)
173
+ return [];
174
+ topicContributions = topic.contributions;
175
+ }
176
+ else {
177
+ // Old flat format: check if topic exists and filter contributions
178
+ const topicExists = project.topics.includes(topicName);
179
+ if (!topicExists)
180
+ return [];
181
+ topicContributions = (project.contributions || []).filter((c) => c.topic === topicName);
182
+ }
183
+ // Sort by timestamp descending (newest first)
184
+ const sorted = [...topicContributions].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
185
+ return limit ? sorted.slice(0, limit) : sorted;
186
+ }
187
+ /**
188
+ * Get all contributions from a specific author in a project
189
+ */
190
+ export function getAuthorContributions(projectId, authorId, limit) {
191
+ const project = getProject(projectId);
192
+ if (!project)
193
+ return [];
194
+ let authorContributions = [];
195
+ // Handle both data formats: old flat format and new nested format
196
+ if (project.topics.length > 0 && typeof project.topics[0] === 'object') {
197
+ // New nested format: topics are objects with contributions
198
+ for (const topic of project.topics) {
199
+ authorContributions.push(...topic.contributions.filter((c) => c.peerId === authorId || c.authorId === authorId // Support both field names
200
+ ));
201
+ }
202
+ }
203
+ else {
204
+ // Old flat format: filter contributions from the flat array by author
205
+ authorContributions = (project.contributions || []).filter((c) => c.peerId === authorId || c.authorId === authorId // Support both field names
206
+ );
207
+ }
208
+ // Sort by timestamp descending (newest first)
209
+ const sorted = authorContributions.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
210
+ return limit ? sorted.slice(0, limit) : sorted;
211
+ }
212
+ /**
213
+ * Search contributions by content (simple text search)
214
+ */
215
+ export function searchContributions(projectId, query, limit) {
216
+ const project = getProject(projectId);
217
+ if (!project)
218
+ return [];
219
+ const lowerQuery = query.toLowerCase();
220
+ let contributions = [];
221
+ // Handle both data formats: old flat format and new nested format
222
+ if (project.topics.length > 0 && typeof project.topics[0] === 'object') {
223
+ // New nested format: topics are objects with contributions
224
+ for (const topic of project.topics) {
225
+ contributions.push(...topic.contributions.filter((c) => c.summary.toLowerCase().includes(lowerQuery) ||
226
+ c.topic.toLowerCase().includes(lowerQuery)));
227
+ }
228
+ }
229
+ else {
230
+ // Old flat format: search through the flat contributions array
231
+ contributions = (project.contributions || []).filter((c) => c.summary.toLowerCase().includes(lowerQuery) ||
232
+ c.topic.toLowerCase().includes(lowerQuery));
233
+ }
234
+ // Sort by timestamp descending (newest first)
235
+ const sorted = contributions.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
236
+ return limit ? sorted.slice(0, limit) : sorted;
237
+ }
238
+ /**
239
+ * Get project status summary (topics with recent activity)
240
+ */
241
+ export function getProjectStatus(projectId) {
242
+ const project = getProject(projectId);
243
+ if (!project)
244
+ return null;
245
+ // Handle both data formats: old flat format and new nested format
246
+ let topics;
247
+ // Check if this project uses the new nested format (topics as objects)
248
+ if (project.topics.length > 0 && typeof project.topics[0] === 'object') {
249
+ // New nested format: topics are objects with contributions
250
+ topics = project.topics.map(topic => {
251
+ const sortedContributions = [...topic.contributions].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
252
+ const contributors = [...new Set(topic.contributions.map((c) => c.authorId || c.peerId))];
253
+ return {
254
+ name: topic.name,
255
+ description: topic.description,
256
+ contributionCount: topic.contributions.length,
257
+ lastContribution: sortedContributions[0],
258
+ contributors
259
+ };
260
+ });
261
+ }
262
+ else {
263
+ // Old flat format: topics are strings, contributions are flat
264
+ topics = project.topics.map(topicName => {
265
+ // Filter contributions for this topic from the flat contributions array
266
+ const topicContributions = project.contributions.filter((c) => c.topic === topicName);
267
+ const sortedContributions = [...topicContributions].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
268
+ // Use peerId instead of authorId based on actual data format
269
+ const contributors = [...new Set(topicContributions.map((c) => c.peerId || c.authorId))];
270
+ return {
271
+ name: topicName,
272
+ contributionCount: topicContributions.length,
273
+ lastContribution: sortedContributions[0],
274
+ contributors
275
+ };
276
+ });
277
+ }
278
+ return { project, topics };
279
+ }
280
+ /**
281
+ * Update project metadata
282
+ */
283
+ export function updateProject(projectId, updates) {
284
+ const projects = loadProjects();
285
+ const projectIndex = projects.findIndex(p => p.id === projectId);
286
+ if (projectIndex === -1)
287
+ return false;
288
+ projects[projectIndex] = {
289
+ ...projects[projectIndex],
290
+ ...updates,
291
+ updatedAt: new Date().toISOString()
292
+ };
293
+ saveProjects(projects);
294
+ return true;
295
+ }
296
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/daemon/projects.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,SAAS,EAAgB,MAAM,qBAAqB,CAAC;AAelF,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,UAAQ,GAAG,IAAI,CAiPxE;AAED,wBAAgB,UAAU,IAAI,IAAI,CAqCjC;AAED,wBAAgB,eAAe,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAyBpE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,SAAS,EAAgB,MAAM,qBAAqB,CAAC;AAgBlF,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,UAAQ,GAAG,IAAI,CA0RxE;AAED,wBAAgB,UAAU,IAAI,IAAI,CAqCjC;AAED,wBAAgB,eAAe,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAyBpE"}
@@ -6,6 +6,7 @@ import { requireConfig, getConfigDir } from '../shared/config.js';
6
6
  import { getPublicKey } from './keypair.js';
7
7
  import { addPeer, getPeer, approvePeer, listPeers, updatePeer } from './peers.js';
8
8
  import { handleMessage } from './message-handler.js';
9
+ import { notifyOpenClaw } from './notify.js';
9
10
  import { startDoormanCleanup, stopDoormanCleanup } from './doorman.js';
10
11
  import { startReplyCleanup, stopReplyCleanup, getPendingReply, deletePendingReply, storePendingReply } from './reply-handler.js';
11
12
  import { loadIntents } from './intent-registry.js';
@@ -70,6 +71,46 @@ export function startServer(config, background = false) {
70
71
  };
71
72
  addPeer(peerData);
72
73
  console.log(`[OGP] Federation request from ${peer.displayName} (${peer.id})`);
74
+ // BUILD-77: Fire immediate OpenClaw notification to agent session
75
+ const notificationText = `[OGP Federation Request] ${peer.displayName} (${peer.id}) requests federation approval\n` +
76
+ `Gateway: ${peer.gatewayUrl}\n` +
77
+ `Email: ${peer.email}\n` +
78
+ `Type: Bidirectional (two-way) federation\n` +
79
+ `Scopes: Pending negotiation during approval\n` +
80
+ `Action: Review and approve/reject using: ogp federation approve ${peer.id}`;
81
+ // Send notification with metadata for agent processing
82
+ const notificationPayload = {
83
+ text: notificationText,
84
+ sessionKey: 'agent:main:main', // Default main agent session
85
+ metadata: {
86
+ ogp: {
87
+ type: 'federation_request',
88
+ peer: {
89
+ id: peer.id,
90
+ displayName: peer.displayName,
91
+ email: peer.email,
92
+ gatewayUrl: peer.gatewayUrl
93
+ },
94
+ requestedAt: peerData.requestedAt,
95
+ federationType: 'bidirectional',
96
+ scopeStatus: 'pending_negotiation',
97
+ approvalCommand: `ogp federation approve ${peer.id}`
98
+ }
99
+ }
100
+ };
101
+ // Fire notification immediately (not via heartbeat)
102
+ try {
103
+ const notified = await notifyOpenClaw(notificationPayload);
104
+ if (notified) {
105
+ console.log(`[OGP] Agent session notified of federation request from ${peer.displayName}`);
106
+ }
107
+ else {
108
+ console.warn(`[OGP] Failed to notify agent session of federation request from ${peer.displayName}`);
109
+ }
110
+ }
111
+ catch (error) {
112
+ console.error(`[OGP] Error notifying agent session:`, error);
113
+ }
73
114
  res.json({
74
115
  received: true,
75
116
  status: 'pending',
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dp-pcs/ogp",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Open Gateway Protocol (OGP) - Peer-to-peer federation daemon for OpenClaw AI gateways with cryptographic signatures",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,32 +1,99 @@
1
1
  #!/usr/bin/env node
2
- import { existsSync, mkdirSync, cpSync } from 'node:fs';
2
+ import { existsSync, mkdirSync, cpSync, readdirSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import { homedir } from 'node:os';
5
5
  import { fileURLToPath } from 'node:url';
6
6
  import { dirname } from 'node:path';
7
+ import { createInterface } from 'node:readline';
7
8
 
8
9
  const __dirname = dirname(fileURLToPath(import.meta.url));
9
10
  const skillsSrc = join(__dirname, '..', 'skills');
10
11
  const skillsDest = join(homedir(), '.openclaw', 'skills');
11
12
 
12
- const skills = ['ogp', 'ogp-expose'];
13
+ // Auto-discover all skill folders
14
+ const availableSkills = readdirSync(skillsSrc, { withFileTypes: true })
15
+ .filter(d => d.isDirectory() && existsSync(join(skillsSrc, d.name, 'SKILL.md')))
16
+ .map(d => d.name);
17
+
18
+ if (availableSkills.length === 0) {
19
+ console.log('No skills found in the skills/ directory.');
20
+ process.exit(0);
21
+ }
22
+
23
+ // Check if running interactively (TTY) or non-interactively
24
+ const isInteractive = process.stdin.isTTY && process.stdout.isTTY;
25
+
26
+ async function prompt(question) {
27
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
28
+ return new Promise(resolve => {
29
+ rl.question(question, answer => {
30
+ rl.close();
31
+ resolve(answer.trim());
32
+ });
33
+ });
34
+ }
35
+
36
+ async function selectSkills() {
37
+ if (!isInteractive) {
38
+ // Non-interactive: install all
39
+ return availableSkills;
40
+ }
41
+
42
+ console.log('\nšŸ“¦ OGP Skills Installer\n');
43
+ console.log('Available skills:');
44
+ availableSkills.forEach((skill, i) => {
45
+ console.log(` ${i + 1}. ${skill}`);
46
+ });
47
+ console.log(` ${availableSkills.length + 1}. Install all`);
48
+ console.log(` 0. Cancel\n`);
49
+
50
+ const answer = await prompt(`Select skills to install (e.g. "1 3" or "${availableSkills.length + 1}" for all): `);
51
+
52
+ if (!answer || answer === '0') {
53
+ console.log('Cancelled.');
54
+ process.exit(0);
55
+ }
56
+
57
+ if (answer === String(availableSkills.length + 1) || answer.toLowerCase() === 'all') {
58
+ return availableSkills;
59
+ }
60
+
61
+ const indices = answer.split(/[\s,]+/).map(n => parseInt(n) - 1).filter(i => i >= 0 && i < availableSkills.length);
62
+ if (indices.length === 0) {
63
+ console.log('No valid selection. Installing all skills.');
64
+ return availableSkills;
65
+ }
66
+
67
+ return indices.map(i => availableSkills[i]);
68
+ }
69
+
70
+ async function main() {
71
+ const selected = await selectSkills();
13
72
 
14
- try {
15
73
  if (!existsSync(skillsDest)) {
16
74
  mkdirSync(skillsDest, { recursive: true });
17
75
  }
18
76
 
19
- for (const skill of skills) {
77
+ console.log('');
78
+ let installed = 0;
79
+ for (const skill of selected) {
20
80
  const src = join(skillsSrc, skill);
21
81
  const dest = join(skillsDest, skill);
22
- if (existsSync(src)) {
82
+ try {
23
83
  cpSync(src, dest, { recursive: true });
24
- console.log(`āœ“ Installed skill: ${skill} → ${dest}`);
84
+ console.log(`āœ“ Installed: ${skill} → ${dest}`);
85
+ installed++;
86
+ } catch (err) {
87
+ console.warn(`āœ— Failed to install ${skill}: ${err.message}`);
25
88
  }
26
89
  }
27
90
 
28
- console.log('\nOGP skills installed. Restart your OpenClaw gateway to load them.');
29
- } catch (err) {
30
- console.warn('Note: Could not auto-install OpenClaw skills:', err.message);
31
- console.warn('Manual install: cp -r $(npm root -g)/ogp/skills/ogp ~/.openclaw/skills/');
91
+ if (installed > 0) {
92
+ console.log(`\n${installed} skill(s) installed. Restart your OpenClaw gateway to load them.`);
93
+ }
32
94
  }
95
+
96
+ main().catch(err => {
97
+ console.warn('Install failed:', err.message);
98
+ console.warn('Manual install: cp -r $(npm root -g)/@dp-pcs/ogp/skills/ogp ~/.openclaw/skills/');
99
+ });
@@ -1,8 +1,18 @@
1
1
  ---
2
2
  skill_name: ogp
3
- version: 0.1.0
4
- description: Manage OGP (Open Gateway Protocol) daemon and federation
5
- trigger: Use when the user wants to configure, start, or manage the OGP federation daemon
3
+ version: 0.2.0
4
+ description: Manage OGP (Open Gateway Protocol) daemon and federation. OGP adds peer-to-peer federation to OpenClaw, allowing AI agents to communicate across different deployments with cryptographic identity and signed messages.
5
+ trigger: Use when the user wants to configure, start, or manage the OGP federation daemon, manage federated peers, send messages to peers, or check federation status.
6
+ requires:
7
+ bins:
8
+ - ogp
9
+ state_paths:
10
+ - ~/.ogp/config.json
11
+ - ~/.ogp/peers.json
12
+ - ~/.ogp/daemon.pid
13
+ - ~/.ogp/keypair.json
14
+ install: npm install -g @dp-pcs/ogp
15
+ docs: https://github.com/dp-pcs/ogp
6
16
  ---
7
17
  ## Prerequisites
8
18
 
@@ -78,7 +78,7 @@ ogp federation list --status approved --json
78
78
  Example interaction:
79
79
  ```
80
80
  Select peers to configure:
81
- [x] Stanislav (giving-produces-microphone-mild.trycloudflare.com)
81
+ [x] Stanislav (peer-gateway.trycloudflare.com)
82
82
  [ ] Leonardo (leo-gateway.example.com)
83
83
  [x] Alice (alice.ngrok-free.app)
84
84
 
@@ -1,15 +1,41 @@
1
1
  ---
2
2
  skill_name: ogp-expose
3
- version: 0.1.0
4
- description: Expose OGP daemon via public tunnel (cloudflared/ngrok)
5
- trigger: Use when the user wants to expose their OGP daemon to the internet
3
+ version: 0.2.1
4
+ description: Expose OGP daemon via public tunnel (cloudflared/ngrok). Automates tunnel setup so federated peers can reach your gateway from anywhere on the internet, without exposing your real IP address.
5
+ trigger: Use when the user wants to expose their OGP daemon to the internet, get a public URL for federation, or set up a tunnel for peer discovery.
6
+ requires:
7
+ bins:
8
+ - ogp
9
+ optional_bins:
10
+ - cloudflared
11
+ - ngrok
12
+ state_paths:
13
+ - ~/.ogp/config.json
14
+ - ~/.ogp/tunnel.pid
15
+ - ~/.ogp/tunnel.log
16
+ install: npm install -g @dp-pcs/ogp
17
+ docs: https://github.com/dp-pcs/ogp
6
18
  ---
19
+
20
+ ## Security Note
21
+
22
+ **Tunnels are optional — and often more private than alternatives.**
23
+
24
+ `ogp expose` uses cloudflared or ngrok to create a secure public URL for your OGP daemon. This is one approach, not the only approach. You can expose your gateway however you prefer:
25
+
26
+ - **Cloudflared/ngrok tunnel** (default) — your real IP is never exposed; traffic routes through the tunnel provider's infrastructure
27
+ - **Reverse proxy** (nginx, Caddy, etc.) — if you have a server with a static IP
28
+ - **VPN/Tailscale** — federate only with peers on the same network
29
+ - **Any publicly reachable URL** — update `gatewayUrl` in `~/.ogp/config.json` manually
30
+
31
+ The tunnel approach is provided as a zero-config convenience. It installs no persistent services unless you explicitly run `ogp install` (which creates a LaunchAgent/systemd service and asks for confirmation first).
32
+
7
33
  ## Prerequisites
8
34
 
9
35
  The OGP daemon must be installed. If you see errors like 'ogp: command not found', install it first:
10
36
 
11
37
  ```bash
12
- npm install -g github:dp-pcs/ogp --ignore-scripts
38
+ npm install -g @dp-pcs/ogp
13
39
  ogp-install-skills
14
40
  ogp setup
15
41
  ```