From 6492ac883c20af92f6d6deb4f6c1d190f06a1990 Mon Sep 17 00:00:00 2001 From: aldum Date: Mon, 26 Jan 2026 21:27:10 +0100 Subject: [PATCH 1/4] chore: bump sdk (beta.47) --- Makefile | 3 +++ package-lock.json | 20 ++++++++++---------- package.json | 4 ++-- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 295e219..8dda798 100644 --- a/Makefile +++ b/Makefile @@ -84,6 +84,9 @@ node_modules: package-lock.json package-lock.json: package.json npm i +check-ts : javascript/index.js + @npm run check + clean: @echo "Cleaning up build artifacts..." @rm -rf $(PACKAGE_ID).s9pk $(PACKAGE_ID)_x86_64.s9pk $(PACKAGE_ID)_aarch64.s9pk $(PACKAGE_ID)_riscv64.s9pk javascript node_modules diff --git a/package-lock.json b/package-lock.json index 99287e6..4d4e3d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "hello-world-startos", "dependencies": { - "@start9labs/start-sdk": "^0.4.0-beta.46" + "@start9labs/start-sdk": "^0.4.0-beta.47" }, "devDependencies": { "@types/node": "^22.19.0", @@ -49,9 +49,9 @@ } }, "node_modules/@start9labs/start-sdk": { - "version": "0.4.0-beta.46", - "resolved": "https://registry.npmjs.org/@start9labs/start-sdk/-/start-sdk-0.4.0-beta.46.tgz", - "integrity": "sha512-RG3l8wCSdKvrXxDXwFBvcbyFZRrn8XqxbrFDl2scHWOQAPmqlH8QGBgsF/LkycElVHZlzNLRl5shx4eNA5DJjQ==", + "version": "0.4.0-beta.47", + "resolved": "https://registry.npmjs.org/@start9labs/start-sdk/-/start-sdk-0.4.0-beta.47.tgz", + "integrity": "sha512-GhnKJ8F/aEuW4gu0GxHXcSDrj69+H+Dysr0a743q7Hy2HZQSvndAy0B3cPmqz+0oaHKXnCL5r8nicgH8zXlENw==", "license": "MIT", "dependencies": { "@iarna/toml": "^3.0.0", @@ -73,9 +73,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.19.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.3.tgz", - "integrity": "sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==", + "version": "22.19.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz", + "integrity": "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==", "dev": true, "license": "MIT", "dependencies": { @@ -165,9 +165,9 @@ } }, "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index 246062a..e135718 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "check": "tsc --noEmit" }, "dependencies": { - "@start9labs/start-sdk": "^0.4.0-beta.46" + "@start9labs/start-sdk": "^0.4.0-beta.47" }, "devDependencies": { "@types/node": "^22.19.0", @@ -20,4 +20,4 @@ "semi": false, "singleQuote": true } -} \ No newline at end of file +} From d8e5e8ef6c02b87710f710698d6a76da5bc94c6c Mon Sep 17 00:00:00 2001 From: aldum Date: Mon, 26 Jan 2026 21:33:29 +0100 Subject: [PATCH 2/4] feat: MVP --- icon.png | Bin 33374 -> 21597 bytes startos/interfaces.ts | 8 +++---- startos/main.ts | 51 +++++++++++++++++++++--------------------- startos/manifest.ts | 18 ++++++++------- startos/utils.ts | 5 +---- 5 files changed, 41 insertions(+), 41 deletions(-) diff --git a/icon.png b/icon.png index 9c8bbdd324d7633d87ebc58a410aac08322462eb..6309c9d2f7f774d7afac2cab1fa5e5d2416e2bbf 100644 GIT binary patch literal 21597 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

a;e`Vb4g&{Da`TloDwi%fgjQU8W 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 bBUAn#2%7&qEQm!@00000NkvXXu0mjf?8@O9 diff --git a/startos/interfaces.ts b/startos/interfaces.ts index da45ae9..7eaf601 100644 --- a/startos/interfaces.ts +++ b/startos/interfaces.ts @@ -7,10 +7,10 @@ export const setInterfaces = sdk.setupInterfaces(async ({ effects }) => { protocol: 'http', }) const ui = sdk.createInterface(effects, { - name: 'Web UI', - id: 'ui', - description: 'The web interface of Hello World', - type: 'ui', + name: 'API', + id: 'api', + description: '', + type: 'api', masked: false, schemeOverride: null, username: null, diff --git a/startos/main.ts b/startos/main.ts index 41f2166..eaa1e49 100644 --- a/startos/main.ts +++ b/startos/main.ts @@ -2,39 +2,40 @@ import { sdk } from './sdk' import { uiPort } from './utils' export const main = sdk.setupMain(async ({ effects }) => { - /** - * ======================== Setup (optional) ======================== - * - * In this section, we fetch any resources or run any desired preliminary commands. - */ - console.info('Starting Hello World!') - /** - * ======================== Daemons ======================== - * - * In this section, we create one or more daemons that define the service runtime. - * - * Each daemon defines its own health check, which can optionally be exposed to the user. - */ + console.info(' ... Starting Maple Proxy ... ') + + const proxyEnv: { + MAPLE_HOST: string, + MAPLE_ENABLE_CORS: string, + MAPLE_API_KEY?: string, + } = { + MAPLE_HOST: '0.0.0.0', + MAPLE_ENABLE_CORS: 'true', + } + + const apiKey = undefined // @TOOD: store + if (apiKey) { + proxyEnv.MAPLE_API_KEY = apiKey + } + return sdk.Daemons.of(effects).addDaemon('primary', { subcontainer: await sdk.SubContainer.of( effects, - { imageId: 'hello-world' }, - sdk.Mounts.of().mountVolume({ - volumeId: 'main', - subpath: null, - mountpoint: '/data', - readonly: false, - }), - 'hello-world-sub', + { imageId: 'maple-proxy' }, + sdk.Mounts.of(), + 'proxy-sub', ), - exec: { command: ['hello-world'] }, + exec: { + command: sdk.useEntrypoint(), + env: proxyEnv + }, ready: { - display: 'Web Interface', + display: 'API', fn: () => sdk.healthCheck.checkPortListening(effects, uiPort, { - successMessage: 'The web interface is ready', - errorMessage: 'The web interface is not ready', + successMessage: 'OK', + errorMessage: 'Error', }), }, requires: [], diff --git a/startos/manifest.ts b/startos/manifest.ts index e5a9a44..d4b84e4 100644 --- a/startos/manifest.ts +++ b/startos/manifest.ts @@ -1,14 +1,14 @@ import { setupManifest } from '@start9labs/start-sdk' export const manifest = setupManifest({ - id: 'hello-world', - title: 'Hello World', + id: 'maple-proxy', + title: 'Maple Proxy', license: 'MIT', wrapperRepo: 'https://github.com/Start9Labs/hello-world-startos', - upstreamRepo: 'https://github.com/Start9Labs/hello-world', - supportSite: 'https://docs.start9.com/', - marketingSite: 'https://start9.com/', - donationUrl: 'https://donate.start9.com/', + upstreamRepo: 'https://github.com/OpenSecretCloud/maple-proxy', + supportSite: 'https://trymaple.ai', + marketingSite: 'https://trymaple.ai', + donationUrl: 'https://trymaple.ai', docsUrl: 'https://github.com/Start9Labs/hello-world-startos/blob/master/instructions.md', description: { @@ -17,8 +17,10 @@ export const manifest = setupManifest({ }, volumes: ['main'], images: { - 'hello-world': { - source: { dockerTag: 'start9/hello-world' }, + 'maple-proxy': { + source: { + dockerTag: 'ghcr.io/opensecretcloud/maple-proxy:0.1.5' + }, }, }, alerts: { diff --git a/startos/utils.ts b/startos/utils.ts index 004fc96..fcec7fc 100644 --- a/startos/utils.ts +++ b/startos/utils.ts @@ -1,4 +1 @@ -// Here we define any constants or functions that are shared by multiple components -// throughout the package codebase. This file will be unnecessary for many packages. - -export const uiPort = 80 +export const uiPort = 8080 From cc6317335005af8a381f4099f075704d3a6dbe07 Mon Sep 17 00:00:00 2001 From: marks Date: Wed, 28 Jan 2026 19:48:38 -0600 Subject: [PATCH 3/4] fix: update stale hello-world references to maple-proxy - Update wrapperRepo, docsUrl, and descriptions in manifest - Rename package to maple-proxy-startos - Replace template instructions with Maple Proxy docs - Fix @TOOD typo --- docs/instructions.md | 18 ++++++++---------- package.json | 2 +- startos/main.ts | 2 +- startos/manifest.ts | 11 +++++------ 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/docs/instructions.md b/docs/instructions.md index 315002e..20c8779 100644 --- a/docs/instructions.md +++ b/docs/instructions.md @@ -1,17 +1,15 @@ -# Instructions for Hello World on StartOS +# Maple Proxy for StartOS -Hello World is a bare bones template for bootstrapping packages for StartOS. +Maple Proxy provides a local API proxy for encrypted, privacy-preserving AI services. -## How to use the template +## Usage -1. Access [hello-world-startos](https://github.com/Start9Labs/hello-world-startos). +Once installed, Maple Proxy exposes an API endpoint that you can use to interact with Maple AI services. -1. Click "Use this template", then "Create new repository". You must be signed into Github to see this button. +## Configuration -1. Name your repository. The name should be `[service-name]-startos`. For example, `NextCloud` is `nextcloud-startos` and `Lightning Terminal` is `lightning-terminal-startos`. +API keys can be configured through the service settings or provided per-request via the `Authorization` header. -1. For the repository description, enter "StartOS package for [Service Name]". +## Documentation -1. Make sure the repository is Public. - -1. Click "Create Repository". +For full documentation, visit: https://blog.trymaple.ai/maple-proxy-documentation/ diff --git a/package.json b/package.json index e135718..eb587ea 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "hello-world-startos", + "name": "maple-proxy-startos", "scripts": { "build": "rm -rf ./javascript && ncc build startos/index.ts -o ./javascript", "prettier": "prettier --write startos", diff --git a/startos/main.ts b/startos/main.ts index eaa1e49..01d84e1 100644 --- a/startos/main.ts +++ b/startos/main.ts @@ -14,7 +14,7 @@ export const main = sdk.setupMain(async ({ effects }) => { MAPLE_ENABLE_CORS: 'true', } - const apiKey = undefined // @TOOD: store + const apiKey = undefined // @TODO: store if (apiKey) { proxyEnv.MAPLE_API_KEY = apiKey } diff --git a/startos/manifest.ts b/startos/manifest.ts index d4b84e4..507d4a9 100644 --- a/startos/manifest.ts +++ b/startos/manifest.ts @@ -4,16 +4,15 @@ export const manifest = setupManifest({ id: 'maple-proxy', title: 'Maple Proxy', license: 'MIT', - wrapperRepo: 'https://github.com/Start9Labs/hello-world-startos', + wrapperRepo: 'https://github.com/OpenSecretCloud/maple-proxy-startos', upstreamRepo: 'https://github.com/OpenSecretCloud/maple-proxy', supportSite: 'https://trymaple.ai', marketingSite: 'https://trymaple.ai', - donationUrl: 'https://trymaple.ai', - docsUrl: - 'https://github.com/Start9Labs/hello-world-startos/blob/master/instructions.md', + donationUrl: null, + docsUrl: 'https://blog.trymaple.ai/maple-proxy-documentation/', description: { - short: 'Bare bones example of a StartOS service', - long: 'Hello World is a template service that provides examples of basic StartOS features.', + short: 'Local API proxy for encrypted, privacy-preserving AI services', + long: 'Maple Proxy provides a local API proxy for encrypted, privacy-preserving AI services.', }, volumes: ['main'], images: { From 058c9676e81b0804fdd360f373b241a909e32fd5 Mon Sep 17 00:00:00 2001 From: marks Date: Wed, 28 Jan 2026 20:07:41 -0600 Subject: [PATCH 4/4] fix: address code review feedback - Update instructions with OpenAI API compatibility note - Convert bare URL to Markdown link - Add MAPLE_PORT env var to match health check port --- docs/instructions.md | 4 ++-- startos/main.ts | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/instructions.md b/docs/instructions.md index 20c8779..45b6cff 100644 --- a/docs/instructions.md +++ b/docs/instructions.md @@ -4,7 +4,7 @@ Maple Proxy provides a local API proxy for encrypted, privacy-preserving AI serv ## Usage -Once installed, Maple Proxy exposes an API endpoint that you can use to interact with Maple AI services. +Once installed, Maple Proxy exposes an API endpoint that you can use to interact with Maple AI encrypted models. Maple is compatible with tools that use the OpenAI API format. ## Configuration @@ -12,4 +12,4 @@ API keys can be configured through the service settings or provided per-request ## Documentation -For full documentation, visit: https://blog.trymaple.ai/maple-proxy-documentation/ +For full documentation, visit the [Maple Proxy Documentation](https://blog.trymaple.ai/maple-proxy-documentation/). diff --git a/startos/main.ts b/startos/main.ts index 01d84e1..e21f962 100644 --- a/startos/main.ts +++ b/startos/main.ts @@ -7,10 +7,12 @@ export const main = sdk.setupMain(async ({ effects }) => { const proxyEnv: { MAPLE_HOST: string, + MAPLE_PORT: string, MAPLE_ENABLE_CORS: string, MAPLE_API_KEY?: string, } = { MAPLE_HOST: '0.0.0.0', + MAPLE_PORT: '8080', MAPLE_ENABLE_CORS: 'true', }