your notifications are fine drowning you.
a personal ai agent that lives on your machine. not in the cloud. not on someone's server. yours.
38 pings a day. 29 are ci failures you already know about. 3 are mentions you'll miss. you don't have a notification problem. you have a filter problem. pulse fixes it.
- remembers you - sqlite on disk. survives restarts. it knows your focus, your projects, what you care about and what you ignore. tell it once. it knows forever. or until you tell it to forget.
- connects accounts - github is wired. gmail and calendar are next. each connector feeds the same pipeline.
- thinks - bring your own key. any openai-compatible provider. without an llm, pattern matching. with one, it reasons.
- stays yours - your data never leaves. no telemetry. no phone home. no account. sqlite, json, one binary.
| slack notifications | gmail filters | pulse | |
|---|---|---|---|
| learns what you care about | no | no | yes |
| works across services | no, siloed | gmail only | github + gmail + calendar |
| shows you less, not more | no | no | yes |
| runs on your machine | no | no | yes |
| works without an llm | n/a | n/a | yes (pattern mode) |
| remembers context | no | no | yes (sqlite) |
two languages. one binary.
rust core (the brain) go shell (the hands)
+------------------+ +------------------+
| filtering | | http server |
| sqlite memory |<--json-->| web ui |
| llm orchestration| | cli |
| digest builder | | connectors |
+------------------+ +------------------+
| |
+------ shared sqlite -------+
go calls rust. they share sqlite and json. no grpc, no protobuf, no microservices. two languages because each does what it's best at. if you can't tell why that's interesting, this isn't for you.
# rust core
cd rust-core && cargo build --release
cp target/release/pulse-core ~/.pulse/
# go shell
cd .. && go build -o pulse ./cmd/pulse/pulse connect github ghp_xxxx # connect a service
pulse digest # get your filtered summary
pulse ask "what did i miss" # ask anything
pulse remember focus "ship v1" # store memory
pulse memory # show what it remembers
pulse serve # web ui on localhost:9090pulse serve
# open http://localhost:9090digest at the top. ask anything. connect services. memory persists across restarts.
123 tests. 58.1% coverage. all pass.
go test ./... -count=1rust go sqlite serde rusqlite reqwest stdlib openai-compatible single binary no build step
every notification tool shows you more. inbox, timeline, unread count. none of them know what you care about. they just show more. pulse shows you less. the right less.
and it's yours. not a saas. not a freemium tier. not a data pipeline to someone's dashboard. your agent, your data, your machine.
see CONTRIBUTING.md. we welcome contributions of all kinds - bug fixes, new patterns, transport support, docs.
good first issues are labeled good first issue.
MIT

