Open-source clients and a personal context server for capturing work and resuming it across environments.
apps/
├── client-chrome/ # Local-first Chrome extension
├── client-raycast/ # Raycast extension
├── server-context/ # Cloudflare Worker + D1 Context/Data API
└── server-brain/ # Local-first AI orchestration and execution API
client-mobile/ is reserved for a future mobile client. Shared packages will
be added only when a stable cross-client contract needs to be extracted.
This repository uses pnpm workspaces and Turborepo.
pnpm install
pnpm verifyRun one package with a root filter:
pnpm dev:chrome
pnpm dev:raycast
pnpm dev:server
pnpm dev:brainBuild the client bundles:
pnpm --filter context-shelf build
pnpm --filter context-os build데이터를 보관할 위치에 따라 하나를 선택하세요.
| Setup | Best for | Data location | Main components |
|---|---|---|---|
| 완전 로컬 | 한 대의 컴퓨터와 오프라인 사용 | Chrome 로컬 저장소 또는 로컬 Worker + D1 | Chrome, 선택적으로 Raycast |
| Cloudflare D1 동기화 | Raycast, 여러 클라이언트, 여러 기기 | 내 Cloudflare Worker + D1 | clients + server-context |
Chrome은 서버 없이 로컬로 시작한 뒤 나중에 연결할 수 있습니다. Raycast는 Chrome 로컬 저장소를 읽지 않으므로 로컬 Worker/D1 또는 Cloudflare Worker가 필요합니다. 자세한 설치, 배포, 보안 확인 절차는 설치 모드 가이드를 따르세요.
The server is deployed independently from apps/server-context. Copy the
public configuration template before local development:
cd apps/server-context
cp wrangler.jsonc.example wrangler.jsonc
pnpm db:migrate:local
pnpm devThe production resource names are server-context for the Worker and
db-context for the D1 database. The package name is also server-context,
so root commands use pnpm --filter server-context ....
원격 명령을 실행하기 전 자신의 D1 database ID, 고유 rate-limit namespace ID,
브라우저 origin을 입력하세요. 실제 wrangler.jsonc, .dev.vars, API token,
기록 데이터는 절대 커밋하지 않습니다.
Remote migrations and deployment are explicit side-effectful operations:
pnpm --filter server-context db:migrate:remote
pnpm --filter server-context run deployClients connect to the deployed Worker URL and a device token. Moving the source into this monorepo does not change the API or D1 data.
apps/server-brain is an independent local Node server for AI orchestration.
Clients call stable Actions such as summarize without knowing the model or
prompt. The server uses an OpenAI-compatible local inference endpoint by
default and validates structured results before returning them.
pnpm --filter server-brain build
pnpm --filter server-brain startserver-context remains the Context/Data Layer: it owns D1, records, and the
/v1/records API. server-brain is the Intelligence/Execution Layer: it
owns Actions, Context resolution hooks, model providers, and task lifecycle.
이는 선택 기능입니다. 모델 제공자 설정과 API 예시는
apps/server-brain/README.md를 참조하세요.
The server being shared does not make old and new client installations the same client. Check the client identity before switching from a pre-monorepo build.
The extension manifest does not currently pin a public key, so a new unpacked build may receive a different extension ID. Chrome storage, shortcuts, and extension origins are tied to that ID.
When testing a new build:
- Load the new
apps/client-chrome/distfromchrome://extensionsand note its ID. - Add the new ID to the private
ALLOWED_ORIGINSvalue inapps/server-context/wrangler.jsonc. Multiple origins may be separated by commas while both versions are being tested. - Deploy the server configuration before testing remote sync.
- Configure the server URL and API token in the new extension.
- Disable the old extension after verification.
Do not run both versions as daily drivers. Both can register the same shortcut, and each capture creates a new record ID. The server only deduplicates an exact retry of the same record ID; it does not merge captures from two installations.
The Raycast extension keeps the package identity context-os. Import the
generated apps/client-raycast/dist using Raycast's Import Extension action
and verify that the existing extension is updated rather than installed as a
second command set. Confirm the Context Settings command and run one capture
before removing or disabling any older installation.
MIT