Skip to content

Repository files navigation

Maple

Maple is a monorepo for the Maple applications, Maple SDKs, local proxy, OpenSecret backend, and updater service. The existing web, desktop, and mobile client lives under apps/maple-research/, including Research chat and desktop Agent Mode. Its directory name does not change the shipped Maple application identity.

Components

Path Responsibility
apps/maple-research/ React/Vite frontend and Tauri desktop/mobile application, app documentation, and distribution configuration
apps/maple-agent/ GPUI desktop-v2 prototype, ACP agent, and CLI proxy; independent from the shipped Research app
sdk/ Independently published Maple TypeScript/React and Rust SDKs
proxy/ Standalone OpenAI-compatible proxy, also consumed by desktop Maple
services/updates/ Desktop updater Worker and verified release-metadata publishing
services/opensecret/ Confidential authentication, inference, conversations, and related backend APIs; local Nitro tooling and signed PCR files
docs/ Shared deployment documentation
scripts/ and .github/workflows/ Shared validation and release entry points

The backend import and legacy PCR publication contract are recorded in the backend migration note. The original OpenSecret repository remains available for installed clients' signed PCR histories. The GPUI import history and upstream follow-up branches are recorded in the Agent migration note.

Development

Use the pinned Nix environment and run shared commands from the repository root:

nix develop --no-update-lock-file
./setup-hooks.sh
just install
just                    # List recipes
just dev                # Research web development
just desktop-dev        # Research Tauri application, including Agent Mode
just agent-dev          # GPUI Agent app, using its own pinned component shell

Follow the Research setup guide to configure apps/maple-research/frontend/.env.local before starting the app. Preserve existing configuration and externally managed workspace resources. All VITE_* values are public client configuration and must never contain secrets. Root justfile, flake.nix, .agents/, and CI scripts remain shared entry points; use each component's guide for its direct Bun or Cargo commands. Consumers select their SDK versions independently. Published pins are the default, with local links available for development; follow the SDK consumer version policy. OpenSecret retains its own pinned Nix shell and Rust package: enter services/opensecret/ before running its commands, and follow its setup guide for stateful PostgreSQL and environment hooks.

Validation and releases

Use the root agent guide for shared policy and the Research validation guide or component README for the checks affected by a change. Report unit tests, builds, runtime smoke tests, and deployed behavior separately.

Production-shaped master builds and GitHub Releases are production actions. A master push that changes app inputs can upload an iOS build to TestFlight; a GitHub Release starts cross-platform packaging and downstream publication. Use the release procedure only for authorized release work. The Pages guide documents preview and production deployment profiles and controls. SDK publication uses separate protected manual workflows and does not create a Maple application release; see the SDK publishing guide. OpenSecret's root CI workflows validate code and in-tree SDK compatibility; they do not publish EIFs or deploy the TEE service. Backend deployment and manual signed-PCR publication remain explicit operator actions.

Keep changes focused, preserve compatibility at public and installed-client boundaries, and report the exact checks and runtime paths exercised before opening a pull request.

About

Maple - Private AI Chat

Resources

Stars

93 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages