diff --git a/WEBSITE_MOVED.md b/WEBSITE_MOVED.md new file mode 100644 index 0000000..4ebdedc --- /dev/null +++ b/WEBSITE_MOVED.md @@ -0,0 +1,7 @@ +# Website moved + +The marketing site for **Openbird** previously lived in `apps/landing` here. + +It now lives in the consolidated monorepo: **[fastrepl/web](https://github.com/fastrepl/web)** under `apps/openbird`. + +Production: https://openbird.fastrepl.com diff --git a/apps/landing/astro.config.mjs b/apps/landing/astro.config.mjs deleted file mode 100644 index 36b70b1..0000000 --- a/apps/landing/astro.config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from "astro/config"; - -export default defineConfig({ - server: { - host: true, - }, -}); diff --git a/apps/landing/package.json b/apps/landing/package.json deleted file mode 100644 index 2ee3b54..0000000 --- a/apps/landing/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@openbird/landing", - "version": "0.0.1", - "private": true, - "type": "module", - "scripts": { - "dev": "astro dev", - "build": "astro build", - "preview": "astro preview", - "astro": "astro" - }, - "dependencies": { - "astro": "^6.1.1" - }, - "devDependencies": { - "typescript": "^6.0.2" - } -} diff --git a/apps/landing/public/favicon.svg b/apps/landing/public/favicon.svg deleted file mode 100644 index 2851df9..0000000 --- a/apps/landing/public/favicon.svg +++ /dev/null @@ -1,8 +0,0 @@ - - Openbird - - - - - - diff --git a/apps/landing/public/openbird-screenshot.png b/apps/landing/public/openbird-screenshot.png deleted file mode 100644 index 89933ec..0000000 Binary files a/apps/landing/public/openbird-screenshot.png and /dev/null differ diff --git a/apps/landing/public/openbird.png b/apps/landing/public/openbird.png deleted file mode 100644 index 1e43602..0000000 Binary files a/apps/landing/public/openbird.png and /dev/null differ diff --git a/apps/landing/src/env.d.ts b/apps/landing/src/env.d.ts deleted file mode 100644 index f964fe0..0000000 --- a/apps/landing/src/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/apps/landing/src/layouts/BaseLayout.astro b/apps/landing/src/layouts/BaseLayout.astro deleted file mode 100644 index 4b9f4a9..0000000 --- a/apps/landing/src/layouts/BaseLayout.astro +++ /dev/null @@ -1,269 +0,0 @@ ---- -interface Props { - description: string; - title?: string; -} - -const { - description, - title = "Openbird | Local-first macOS activity journal", -} = Astro.props; ---- - - - - - - - - - - {title} - - -
-

- Planned for Char: - Openbird is being developed for integration into - Char - as a feature. -

-
- - - - - diff --git a/apps/landing/src/pages/how-it-works.astro b/apps/landing/src/pages/how-it-works.astro deleted file mode 100644 index e271128..0000000 --- a/apps/landing/src/pages/how-it-works.astro +++ /dev/null @@ -1,121 +0,0 @@ ---- -import BaseLayout from "../layouts/BaseLayout.astro"; - -const collectionItems = [ - "Openbird runs locally on macOS after you grant Accessibility permission.", - "This repo is an experimental proof of concept focused on the accessibility pipeline that will later inform native personal-context features in fastrepl/char.", - "It watches the frontmost app and focused window, capturing app name, bundle ID, window title, browser URL when available, visible accessibility text, and timestamps.", - "Capture runs when the active app changes and on a short recurring interval while the collector is running.", - "Pause rules and app or domain exclusions are checked before data is saved.", - "Openbird does not capture raw key events, clipboard contents, passwords, secure text fields, hidden windows, minimized windows, or automatic screenshots.", -]; - -const processingItems = [ - "Before persistence, snapshots are sanitized to remove duplicate lines, low-signal browser or chat chrome, and generic titles when a better local label is available.", - "If the visible context has not meaningfully changed, Openbird extends the current activity event instead of creating a duplicate entry.", - "Raw events are grouped into more meaningful activity chunks by app, time proximity, titles, URLs, and cleaned text excerpts.", - "Prepared activity chunks are cached locally per day so summary generation does not need to rebuild the evidence from scratch every time.", -]; - -const generationItems = [ - "When you generate a daily review, Openbird loads that day's grouped events, drops excluded items, and compacts them into a smaller set of evidence sections.", - "Each evidence section keeps a time window plus the strongest cues from the underlying activity: app names, titles, URL summaries, and cleaned excerpts.", - "If you configured a provider, Openbird sends those prepared evidence sections to the model with instructions to write a concise markdown recap of the day.", - "If no provider is configured, or the provider call fails, Openbird falls back to a local heuristic summary so the review still renders.", - "The resulting journal is then saved back to the local database with links to the underlying source events.", -]; ---- - - -
-

Back to home

- -
- Openbird bird illustration -

How Openbird processes your context

-

How local accessibility activity is collected, cleaned up, grouped, and turned into the current daily review.

-
- -

- Openbird's current daily review is built from a local accessibility timeline, not screenshots - or a remote backend. The pipeline is straightforward: capture the frontmost context, clean it - up, group it into meaningful chunks, then generate a grounded recap from that prepared - evidence. -

- -

- This is intentionally a narrow proof of concept. The point is to validate accessibility-first - personal context before this capability is integrated natively into fastrepl/char. -

- -

Short version

- -
    -
  1. Capture the frontmost app, window, URL when available, visible accessibility text, and timestamps.
  2. -
  3. Sanitize noisy UI text, merge repeated context, and group related events.
  4. -
  5. Turn those grouped events into evidence sections for the day.
  6. -
  7. Generate markdown with your configured model, or fall back to a built-in heuristic recap.
  8. -
- -

1. Capture

- -
    - {collectionItems.map((item) => ( -
  • {item}
  • - ))} -
- -

- All captured activity is stored locally at - ~/Library/Application Support/Openbird/openbird.sqlite. -

- -

2. Cleanup and grouping

- -
    - {processingItems.map((item) => ( -
  • {item}
  • - ))} -
- -

- This cleanup step is what makes the daily review readable. It strips browser and chat chrome, - merges repeated context, and reduces noisy app switches before any generation happens. -

- -

3. Review generation

- -
    - {generationItems.map((item) => ( -
  • {item}
  • - ))} -
- -

- The generated review is meant to read like a grounded recap of your day, not a raw timeline - dump. Openbird explicitly asks the model to synthesize the evidence into a few human sections - and keep the output in markdown. -

- -

What leaves your Mac

- -

- By default, capture and storage stay local. If you use a local provider such as Ollama or LM - Studio, generation stays local too. -

- -

- If you configure a remote OpenAI-compatible endpoint, Openbird sends the prepared evidence for - the selected day to that endpoint at generation time. It does not upload automatic screenshots - because it does not take them in the first place. -

- -

- The control surface stays the same either way: you can pause capture, exclude apps or domains, - inspect the raw log, and delete the last hour, the last day, or everything. -

-
-
diff --git a/apps/landing/src/pages/index.astro b/apps/landing/src/pages/index.astro deleted file mode 100644 index 67d4e5c..0000000 --- a/apps/landing/src/pages/index.astro +++ /dev/null @@ -1,191 +0,0 @@ ---- -import BaseLayout from "../layouts/BaseLayout.astro"; - -const releaseUrl = "https://github.com/ComputelessComputer/openbird/releases/latest"; -const sourceUrl = "https://github.com/ComputelessComputer/openbird"; -const latestReleaseApiUrl = "https://api.github.com/repos/ComputelessComputer/openbird/releases/latest"; - -const detailItems = [ - "Experimental proof of concept for accessibility-first personal context on macOS.", - "Captures the frontmost app, window title, browser URL when available, visible accessibility text, and timestamps.", - "Intentionally focused on Accessibility API data only. No automatic screenshots, raw key events, clipboard contents, passwords, secure text fields, or hidden windows.", - "Stores captured data locally at ~/Library/Application Support/Openbird/openbird.sqlite and supports Ollama, LM Studio, and other OpenAI-compatible endpoints.", - "Built as a native context primitive that is planned for integration directly into char.com.", - "Built for macOS 14+ on Apple Silicon.", -]; - -const faqItems = [ - { - question: "What is Openbird for?", - answer: - "Openbird is a small, focused experiment around turning Accessibility API data into usable personal context. The long-term direction is native integration into char.com.", - }, - { - question: "What can I do with it today?", - answer: - "Today it can generate a daily review, answer follow-up questions about your day, and let you inspect the raw activity log behind both.", - }, - { - question: "How does Openbird turn activity into a daily review?", - answer: - "Read how Openbird collects local accessibility context, cleans it up, groups it, and turns it into a daily review.", - }, - { - question: "Can I control or delete the data?", - answer: - "Yes. You can pause capture, exclude apps and domains, inspect the raw log, and delete the last hour, the last day, or everything.", - }, - { - question: "Can I use my own model?", - answer: - "Yes. Local endpoints work out of the box, and remote OpenAI-compatible providers work too.", - }, - { - question: "How do I install it?", - answer: - "Download the latest DMG, drag Openbird.app into Applications, grant Accessibility permission, then pick a provider and generate your first review.", - }, -]; ---- - - -
-
- Openbird bird illustration -

- Openbird - [BETA] -

-

An experimental accessibility-first proof of concept for your Mac — fully open-source

-
- -

- Openbird extracts local context from the frontmost app, focused window, browser URL when - available, and visible accessibility text in the active window. -

- -

- It is intentionally narrow. Openbird is a proof of concept focused on the accessibility - pipeline only, not screenshots or broad device surveillance. -

- -

- The goal is to learn what a trustworthy personal-context layer should look like before this - capability is integrated natively into char.com. Everything stays on your Mac by default, - and you can inspect the log, pause capture, exclude apps and domains, choose your own model, - and delete data whenever you want. -

- -

- Openbird is available now. - Download the latest release. - -

- -
- Openbird Today view showing a generated daily review timeline on macOS -
- The Today view turns your local activity log into a grounded daily review you can inspect, - cite, and follow up on. -
-
- -

At a glance

- -
    - {detailItems.map((item) => ( -
  • - ))} -
- -

FAQ

- - {faqItems.map((item) => ( - <> -

{item.question}

-

- - ))} -
- - -
- - diff --git a/apps/landing/tsconfig.json b/apps/landing/tsconfig.json deleted file mode 100644 index 801d1ab..0000000 --- a/apps/landing/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "astro/tsconfigs/strict", - "compilerOptions": { - "baseUrl": "." - } -} diff --git a/package.json b/package.json index eb3220c..7fdd649 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,5 @@ "workspaces": [ "apps/*" ], - "scripts": { - "landing:dev": "bun run --filter @openbird/landing dev", - "landing:build": "bun run --filter @openbird/landing build", - "landing:preview": "bun run --filter @openbird/landing preview" - } + "scripts": {} }