Skip to content

Commit 599efc4

Browse files
committed
Polish repository presentation and community health docs
1 parent 9fc6c0c commit 599efc4

8 files changed

Lines changed: 213 additions & 92 deletions

File tree

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
11
blank_issues_enabled: false
2+
contact_links:
3+
- name: Documentation and setup help
4+
url: https://github.com/Sense-Kit/sense-kit/blob/main/docs/README.md
5+
about: Start here for the spec, runbooks, ADRs, and privacy notes before opening an issue.
6+
- name: Security reporting
7+
url: https://github.com/Sense-Kit/sense-kit/security/policy
8+
about: Please report security and privacy issues privately through the security policy.

.github/dependabot.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "npm"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
open-pull-requests-limit: 5
8+
9+
- package-ecosystem: "github-actions"
10+
directory: "/"
11+
schedule:
12+
interval: "weekly"
13+
open-pull-requests-limit: 5

.github/pull_request_template.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,15 @@ What changed?
66

77
Why was this change needed?
88

9-
## Checks
9+
## Scope
10+
11+
- [ ] Runtime logic
12+
- [ ] iOS UI
13+
- [ ] Contracts / schemas
14+
- [ ] Docs only
15+
- [ ] Tooling / CI
16+
17+
## Validation
1018

1119
- [ ] `pnpm build`
1220
- [ ] `pnpm test`
@@ -15,6 +23,12 @@ Why was this change needed?
1523
- [ ] `cd apps/ios/Packages/SenseKitUI && swift test`
1624
- [ ] `xcodebuild -workspace apps/ios/SenseKit.xcworkspace -scheme SenseKitApp -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO build`
1725

26+
## Docs and architecture
27+
28+
- [ ] README or docs updated if behavior changed
29+
- [ ] ADR added or updated if architecture changed
30+
- [ ] Background behavior claims are labeled as `VERIFIED_BY_PLATFORM_DOCS`, `REQUIRES_BENCH_TEST`, or `UNSAFE_TO_BUILD_AROUND`
31+
1832
## Risks
1933

2034
Anything reviewers should watch closely?

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## Unreleased
6+
7+
Documentation and repository polish:
8+
9+
- rewrote the top-level README to present SenseKit more clearly as an open-source project
10+
- added a docs index for easier navigation
11+
- added security and support policies
12+
- improved GitHub issue and pull request guidance for contributors
13+
514
## v0.1.0 - 2026-03-09
615

716
First public scaffold release.

README.md

Lines changed: 76 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,93 @@
11
# SenseKit
22

3-
SenseKit is an open-source context runtime for AI agents.
3+
[![CI](https://github.com/Sense-Kit/sense-kit/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/Sense-Kit/sense-kit/actions/workflows/ci.yml)
44

5-
It runs on iPhone, listens to passive sensor signals, turns them into deterministic context events, and delivers those events to OpenClaw over signed HTTPS.
5+
SenseKit is an open-source iPhone context runtime for AI agents.
66

7-
The goal is simple: an AI agent should understand important real-world transitions without asking the user to build Shortcuts automations first.
7+
It listens to passive on-device signals like motion, location, workouts, power state, and lightweight calendar context, turns those signals into deterministic events, and delivers signed HTTPS payloads to OpenClaw.
88

9-
## Product thesis
9+
The project exists to solve one practical problem: an agent cannot act intelligently around the real world if the user has to build a pile of Shortcuts automations before anything works. SenseKit aims to be useful right after install and permission approval.
1010

11-
SenseKit is:
11+
## Why SenseKit
1212

13-
- passive-first
14-
- event-first
15-
- deterministic
16-
- local-first
17-
- OpenClaw-first
13+
- `Passive-first`: useful events should be possible without manual Shortcuts setup.
14+
- `Deterministic`: the runtime uses explicit rules, weights, and thresholds instead of opaque ML guesses.
15+
- `Local-first`: raw sensor data stays on the phone by default.
16+
- `Policy-aware`: each outbound event includes the safety context OpenClaw needs to react responsibly.
17+
- `OpenClaw-first`: the primary integration path is signed outbound delivery, not hosting a server on the phone.
1818

19-
That means:
19+
## Current status
2020

21-
- the iPhone app should do useful work right after install and permissions
22-
- event detection uses fixed weights and thresholds, not ML guesses
23-
- raw sensor data stays local by default
24-
- the main integration is an outbound webhook, not a phone-hosted server
21+
SenseKit is early, opinionated, and real.
2522

26-
This repository is a monorepo. It keeps the iOS runtime, shared wire contracts, OpenClaw integration helpers, and project docs together because they change together.
23+
What already exists in this repository:
2724

28-
## What data gets sent to OpenClaw
29-
30-
SenseKit does not send a raw dump of everything your phone sees.
25+
- a deterministic corroboration engine for passive events
26+
- a Swift runtime package with Motion, Location, HealthKit, power, and calendar collectors
27+
- SQLite-backed runtime state, queueing, and audit logging
28+
- signed webhook delivery for OpenClaw
29+
- a SwiftUI app shell with onboarding, settings, audit log, and debug timeline scaffolding
30+
- a separate bench harness target for field testing
31+
- shared JSON schemas and TypeScript validation helpers
3132

32-
What currently goes out:
33+
What is still being validated on real devices:
3334

34-
- one event at a time, for example `motion_activity_observed` or `arrived_home`
35-
- the event time
36-
- a confidence score
37-
- short reasons like `motion.primary.walking` or `location.region_enter_home`
38-
- a small snapshot with coarse state like:
39-
- place type: `home`, `work`, or `other`
40-
- routine flags like `awake` or `workout`
41-
- minimal calendar booleans
42-
- battery bucket and charging state
43-
- a policy block that tells OpenClaw which response modes are safe
35+
- wake detection precision
36+
- driving detection precision
37+
- battery impact over normal daily use
38+
- background wake and delivery reliability
39+
- final onboarding polish
4440

45-
What stays local by default:
41+
If you are evaluating the project, start with:
4642

47-
- exact GPS coordinates
48-
- raw motion history
49-
- raw HealthKit values
50-
- calendar titles and attendees
51-
- local debug traces
52-
- tokens and secrets
43+
- [SPEC.md](SPEC.md)
44+
- [docs/README.md](docs/README.md)
45+
- [docs/bench/phase-1a-field-test.md](docs/bench/phase-1a-field-test.md)
46+
- [docs/runbooks/runtime-bootstrap.md](docs/runbooks/runtime-bootstrap.md)
5347

54-
In the current bench app:
48+
## Architecture at a glance
5549

56-
- Motion is currently forwarded as coarse activity events like `walking`, `running`, `stationary`, or `automotive`
57-
- Home / Work is currently forwarded as place events like `arrived_home`
50+
```mermaid
51+
flowchart LR
52+
A["On-device collectors<br/>Motion, location, HealthKit,<br/>power, calendar"] --> B["Deterministic corroboration engine"]
53+
B --> C["Context event<br/>confidence, reasons, policy"]
54+
C --> D["Signed outbound queue"]
55+
D --> E["OpenClaw webhook"]
56+
```
5857

59-
So the phone sends structured context events, not a full sensor stream.
58+
SenseKit is a runtime, not a data exhaust pipeline. The phone keeps the raw sensor layer local and only sends small, structured events once the runtime is confident something meaningful happened.
6059

61-
## What works today
60+
## What leaves the phone
6261

63-
This repo already includes the first serious product scaffolding:
62+
SenseKit does not send a raw dump of everything the device sees.
6463

65-
- a deterministic corroboration engine for passive events
66-
- a Swift runtime package with Motion, Location, HealthKit, power, and calendar collectors
67-
- SQLite-backed runtime state, queue, and audit log
68-
- signed webhook delivery for OpenClaw
69-
- a SwiftUI app shell with onboarding, settings, audit log, and debug timeline scaffolding
70-
- a separate bench harness target for field testing
71-
- shared JSON schemas and TypeScript validation helpers
64+
| Sent to OpenClaw | Stays local by default |
65+
| --- | --- |
66+
| One event at a time, such as `motion_activity_observed` or `arrived_home` | Exact GPS coordinates |
67+
| Event timestamp | Raw motion history |
68+
| Confidence score | Raw HealthKit values |
69+
| Short reason codes like `motion.primary.walking` | Calendar titles and attendees |
70+
| A small snapshot with coarse state | Local debug traces |
71+
| A policy block describing safe response modes | Tokens and secrets |
7272

73-
What is not proven yet:
73+
In the current bench app, motion is forwarded as coarse activity events such as `walking`, `running`, `stationary`, or `automotive`, and place transitions are forwarded as events such as `arrived_home`.
7474

75-
- real-device wake precision
76-
- real-device driving precision
77-
- battery impact over normal daily use
78-
- final onboarding polish
75+
## Repository guide
7976

80-
In other words: the architecture and build system are in place, but the passive claims still need bench validation.
77+
- [`apps/ios`](apps/ios): the iPhone app, bench harness, runtime package, and SwiftUI package
78+
- [`packages/contracts`](packages/contracts): JSON schemas, fixtures, and TypeScript validation helpers
79+
- [`packages/openclaw-skill`](packages/openclaw-skill): example skill packaging for OpenClaw
80+
- [`packages/openclaw-plugin`](packages/openclaw-plugin): plugin surface for later OpenClaw integration work
81+
- [`packages/examples`](packages/examples): QR bootstrap and hook configuration examples
82+
- [`docs`](docs): ADRs, privacy notes, release notes, runbooks, and field-test plans
8183

82-
## Repo layout
84+
Documentation entry points:
8385

84-
- `apps/ios`: iPhone app, bench harness, Swift runtime package, and SwiftUI package
85-
- `packages/contracts`: JSON schemas, fixtures, and TypeScript validation helpers
86-
- `packages/openclaw-skill`: example skill packaging for OpenClaw
87-
- `packages/openclaw-plugin`: plugin surface for later OpenClaw integration work
88-
- `packages/examples`: webhook and QR bootstrap examples
89-
- `docs`: ADRs, privacy notes, bench plans, and runbooks
86+
- [docs/README.md](docs/README.md)
87+
- [CHANGELOG.md](CHANGELOG.md)
88+
- [CONTRIBUTING.md](CONTRIBUTING.md)
89+
- [SECURITY.md](SECURITY.md)
90+
- [SUPPORT.md](SUPPORT.md)
9091

9192
## Local setup
9293

@@ -124,46 +125,30 @@ xcodebuild -workspace apps/ios/SenseKit.xcworkspace -scheme SenseKitApp -sdk iph
124125
xcodebuild -workspace apps/ios/SenseKit.xcworkspace -scheme SenseKitBenchApp -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO build
125126
```
126127

127-
## OpenClaw connectivity and security
128+
## OpenClaw connectivity
128129

129130
For personal testing, keep OpenClaw private and use Tailscale instead of exposing the raw Gateway to the public internet.
130131

131-
- Recommended first setup: OpenClaw stays on `gateway.bind: "loopback"` and is exposed privately with Tailscale Serve.
132-
- Do not expose the raw OpenClaw Gateway port publicly just to receive SenseKit hooks. The Gateway is a larger surface than one webhook path.
132+
- Keep OpenClaw on `gateway.bind: "loopback"` and expose it privately with Tailscale Serve.
133133
- Use a separate `hooks.token` for SenseKit hooks. Do not reuse `gateway.auth.token`.
134-
- Treat hook payloads as untrusted content even when they come from systems you control. Keep the receiving agent narrow and low-privilege.
135-
- A public hook-only reverse proxy or a small verifier relay can come later, but they are not the safest first deployment.
136-
- If OpenClaw returns `hook mapping failed`, remove any custom `transform` block first and test with the example mapping unchanged. SenseKit sends snake_case fields like `event.event_id`, `event.event_type`, and `snapshot.place.type`.
134+
- Treat hook payloads as untrusted content even when they come from systems you control.
135+
- If OpenClaw returns `hook mapping failed`, remove any custom `transform` block first and test with the example mapping unchanged.
137136

138-
## Debug Timeline vs Audit Log
137+
## Contribution focus
139138

140-
- `Debug Timeline` is the local notebook. It shows what the phone sensed and what the local runtime did with it.
141-
- `Audit Log` is the delivery ledger. It shows whether a finished outbound event was queued, delivered, failed, or expired on the way to OpenClaw.
142-
143-
That means:
144-
145-
- use `Debug Timeline` when you want to debug Motion, Location, Settings, or rule evaluation
146-
- use `Audit Log` when you want to know whether OpenClaw actually received the event
147-
148-
Location events are included in Audit once they become real outbound events. For example, `arrived_home` should show up there after it is queued and delivered.
149-
150-
## First development focus
151-
152-
If you want to help on the MVP, the highest-value work is:
139+
The highest-value work for the current milestone is:
153140

154141
1. passive wake validation on real devices
155142
2. driving detection validation on real commutes
156143
3. background wake and delivery reliability
157144
4. onboarding and debug timeline polish
158145

159-
The best starting docs are:
160-
161-
- `docs/adr`
162-
- `docs/bench/phase-1a-field-test.md`
163-
- `docs/runbooks/runtime-bootstrap.md`
146+
Contributions are welcome. If your change affects architecture, add or update an ADR in [`docs/adr`](docs/adr).
164147

165-
## Open source notes
148+
## Project standards
166149

167150
- License: Apache-2.0
168-
- Contributions are welcome. See `CONTRIBUTING.md`
169-
- Architecture decisions live in `docs/adr`
151+
- Contribution guide: [CONTRIBUTING.md](CONTRIBUTING.md)
152+
- Code of conduct: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
153+
- Security policy: [SECURITY.md](SECURITY.md)
154+
- Support guide: [SUPPORT.md](SUPPORT.md)

SECURITY.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Security Policy
2+
3+
## Supported versions
4+
5+
SenseKit is still early-stage software. Security fixes are currently tracked against:
6+
7+
- the latest commit on `main`
8+
- the latest tagged release
9+
10+
Older snapshots may receive fixes on a best-effort basis, but only the current development line should be treated as supported.
11+
12+
## Reporting a vulnerability
13+
14+
Please do not open public GitHub issues for security reports.
15+
16+
Send reports to `julian@sensekit.ai` with:
17+
18+
- a short description of the issue
19+
- the affected component or file
20+
- impact if you know it
21+
- clear reproduction steps or a proof of concept if you have one
22+
23+
If the report is valid, the goal is to acknowledge it within 3 business days and keep you updated until a fix or mitigation is available.
24+
25+
## Scope and expectations
26+
27+
The most sensitive areas in this repository are:
28+
29+
- webhook signing and verification paths
30+
- token handling and configuration surfaces
31+
- anything that could accidentally widen what leaves the device
32+
- local data storage and debug export behavior
33+
34+
Please report suspected privacy leaks the same way you would report a security bug.

SUPPORT.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Support
2+
3+
Use the path that matches what you need:
4+
5+
- Bug reports: open a GitHub issue with the bug template
6+
- Feature requests: open a GitHub issue with the feature template
7+
- Security or privacy issues: follow [SECURITY.md](SECURITY.md) and report them privately
8+
- Setup, architecture, or documentation questions: start with [docs/README.md](docs/README.md) and then open an issue if the answer is still missing
9+
10+
When you open an issue, include enough context to make it actionable:
11+
12+
- the area you are working in
13+
- your device or environment
14+
- the exact behavior you expected
15+
- what you already tried
16+
17+
For background behavior claims, please say whether the claim is:
18+
19+
- `VERIFIED_BY_PLATFORM_DOCS`
20+
- `REQUIRES_BENCH_TEST`
21+
- `UNSAFE_TO_BUILD_AROUND`

docs/README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# SenseKit Documentation
2+
3+
This folder holds the working documentation for SenseKit.
4+
5+
If you are new to the project, use this reading order:
6+
7+
1. [README.md](../README.md) for the high-level product and repo overview
8+
2. [SPEC.md](../SPEC.md) for the product spec and event model
9+
3. [docs/runbooks/runtime-bootstrap.md](runbooks/runtime-bootstrap.md) for the current integration and runtime bootstrap path
10+
4. [docs/bench/phase-1a-field-test.md](bench/phase-1a-field-test.md) for real-device validation work
11+
5. [docs/adr](adr) for the architecture rules that shape implementation decisions
12+
13+
## By topic
14+
15+
- [Architecture Decision Records](adr)
16+
- why the project is passive-first
17+
- why event detection is deterministic
18+
- why delivery is outbound-only
19+
- what platform constraints the project treats as real
20+
- [Bench and validation docs](bench)
21+
- field-test plans
22+
- evidence for background behavior claims
23+
- [Runbooks](runbooks)
24+
- runtime bootstrap and integration setup
25+
- [Privacy docs](privacy)
26+
- minimization rules
27+
- privacy policy
28+
- [Release notes](releases)
29+
- release snapshots and beta notes
30+
31+
## Recommended paths
32+
33+
Use these if you already know why you are here:
34+
35+
- Evaluating the project: [SPEC.md](../SPEC.md), [docs/adr](adr), [docs/bench/phase-1a-field-test.md](bench/phase-1a-field-test.md)
36+
- Integrating with OpenClaw: [docs/runbooks/runtime-bootstrap.md](runbooks/runtime-bootstrap.md)
37+
- Reviewing privacy and data handling: [docs/privacy/minimization.md](privacy/minimization.md), [docs/privacy/privacy-policy.md](privacy/privacy-policy.md)
38+
- Contributing code or docs: [CONTRIBUTING.md](../CONTRIBUTING.md), [CHANGELOG.md](../CHANGELOG.md)

0 commit comments

Comments
 (0)