From 2b211aa1919bd43e5950aadee6e50a90a4c7b09a Mon Sep 17 00:00:00 2001 From: Divyam Talwar Date: Mon, 24 Aug 2026 00:10:44 +0530 Subject: [PATCH 1/4] chore: establish CI and truthful alpha boundaries --- .github/workflows/ci.yml | 37 +++++++++++++++++++++++++++++++++++++ README.md | 20 +++++++++++--------- SECURITY.md | 6 ++++++ 3 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..172d101 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,37 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + +permissions: + contents: read + +jobs: + frontend: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2 + with: + bun-version: 1.3.13 + - run: bun install --frozen-lockfile + - run: bun run lint + - run: bun run build + + rust: + runs-on: ubuntu-latest + defaults: + run: + working-directory: src-tauri + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - run: rustup component add rustfmt clippy + - run: cargo fmt --all --check + - run: cargo clippy --all-targets --all-features -- -D warnings + - run: cargo test --all-targets --all-features diff --git a/README.md b/README.md index 34f1362..0d4cdaa 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ # Augur OS +> **Alpha software.** Augur is a local-first account-intelligence workspace under active development. Build from source for evaluation; there are not yet signed public installers or a stable release channel. “OS” is the product name, not a claim that Augur is an operating system or extension platform. + ### Augur reads the signals. You close the deal. A local-first lead-intelligence workspace that turns a cold company name into a fully researched, evidence-backed, scored opportunity in minutes. @@ -23,9 +25,9 @@ A local-first lead-intelligence workspace that turns a cold company name into a ### Watch the launch film -[Augur OS launch film](https://github.com/DivyamTalwar/Augur/releases/download/v0.2.1/augur-film.mp4) +Augur OS launch film preview -**[▶ Watch the full 3-minute film](https://github.com/DivyamTalwar/Augur/releases/download/v0.2.1/augur-film.mp4)** +The full launch film will be attached to the first signed public release. @@ -52,9 +54,9 @@ A local-first lead-intelligence workspace that turns a cold company name into a Augur OS is a desktop application for B2B account research and signal-based lead scoring. You give it a list of companies. For each one it runs a deep, multi-stage research pipeline, scores the account against your own ideal-customer rubric, maps the real buying committee, and drafts outreach grounded in cited evidence. Work that used to take an afternoon per account finishes in minutes. -What sets it apart is discipline. Augur does not just generate a plausible-sounding summary. A dedicated verification stage audits every claim against the source it came from and drops anything it cannot support, so the profiles you read are grounded in evidence you can open and check yourself. +What sets it apart is discipline. Augur does not just generate a plausible-sounding summary. A bounded verification stage audits the evidence metadata supplied by research specialists and drops or weakens unsupported claims. The verifier does not independently fetch every source today, so citations remain reviewable evidence—not a guarantee of factual correctness. -Augur runs as a native desktop app built with React 19, TypeScript, Tauri 2, Rust, and SQLite. Your research, your scores, and your pipeline live in a local database on your own machine. Nothing is uploaded to an Augur server. There is no Augur server. +Augur runs as a native desktop app built with React 19, TypeScript, Tauri 2, Rust, and SQLite. Your research, scores, and pipeline live in a local database on your machine. There is no Augur-operated server, but research prompts and account data are sent to the Claude service through your local Claude CLI; Apollo enrichment sends requested contact data to Apollo when enabled. ## The problem @@ -72,7 +74,7 @@ Augur OS attacks all three problems at once: it does the research fast, it groun - **Deep company research.** For every account Augur works out the business model, what the company sells, how it makes money, who buys from it, where it is feeling operational pain, recent buying triggers, the technology stack, and competitive position. Each angle is researched in genuine depth rather than reduced to a single line. -- **Evidence for every claim.** A dedicated verifier stage reviews every finding the research agents produce, checks it against the source URL and quote behind it, weighs confidence and freshness, and rejects anything unsupported, stale, or contradicted. Unsupported claims never reach the final profile. What you read is what the evidence supports. +- **Reviewable evidence.** A dedicated verifier stage reviews every finding the research agents produce, checks its supplied URL and evidence metadata, weighs confidence and freshness, and rejects or weakens unsupported, stale, or contradicted findings. The verifier is bounded and does not independently fetch every URL; open important citations before acting on them. - **Signal-based lead scoring.** Define your ideal customer once as a rubric. Augur grades every company from 0 to 100 against that rubric and shows the full reasoning behind the number, so the score is something you can defend in a pipeline review rather than a black box. @@ -153,9 +155,9 @@ Each specialist owns exactly one research angle and writes its findings as a str Every specialist is told to prefer primary sources, attach an evidence URL to each non-obvious claim, and never invent a finding. If the evidence is weak, the specialist lowers its confidence or returns nothing rather than guessing. -### The verifier +### The bounded verifier -The verifier is the integrity check. It reads every specialist artifact and audits each claim: does it have a credible evidence URL, is the confidence defensible, is the date fresh enough, and do any specialists contradict each other? Claims that are unsupported, stale, contradicted, or too speculative are rejected. Conflicts are preserved rather than averaged away. The verifier is authoritative: its verdict on every claim is final, and the next stage must respect it. +The verifier reads every specialist artifact and audits each claim's supplied evidence metadata: URL, confidence, freshness, and cross-specialist conflicts. It does not perform a second web crawl or independently inspect every URL. Uninspected claims should be weak unless corroborated; unsupported or contradictory claims should be rejected. The synthesizer must respect the resulting ledger, but users should still open material citations before relying on a profile. ### The synthesizer @@ -334,7 +336,7 @@ tsc -b # type-check ## FAQ **Where is my data stored?** -In a local SQLite database in your operating system's application data directory. Augur OS is local-first. There is no Augur server and nothing is uploaded. +In a local SQLite database in your operating system's application data directory. There is no Augur-operated server. Research still leaves the machine through the Claude CLI, and Apollo enrichment leaves the machine when that optional integration is enabled. **Do I need an internet connection?** You need one while a research job is running, because the research agents fetch public web sources. Reading existing profiles, scores, and people works fully offline. @@ -346,7 +348,7 @@ Augur OS itself is free and open source under Apache 2.0. The research engine ru Yes. The prompt templates that drive research and scoring are part of the project, and you define your scoring rubric in the app to match your ideal customer. **How accurate is the research?** -Every non-obvious claim is tied to an evidence source, and the verifier stage rejects claims it cannot support. Profiles surface their citations and any unresolved claims, so you can check the evidence yourself rather than trusting the output blindly. +Research agents are instructed to attach evidence sources, and the bounded verifier rejects or weakens claims whose supplied metadata is inadequate. It does not independently fetch every URL. Profiles surface citations and unresolved claims so you can inspect material evidence yourself. **Which platforms are supported?** Augur OS builds as a native desktop app via Tauri 2. It can be built for macOS, Windows, and Linux, subject to the Tauri platform prerequisites. diff --git a/SECURITY.md b/SECURITY.md index bd0adf6..3c889b0 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,6 +4,12 @@ Augur OS is under active development. Security fixes are applied to the latest state of the `main` branch. +## Data-flow boundary + +Augur is local-first, not offline-only. Its SQLite database and generated profiles are stored locally, but company prompts and research context are sent through the locally installed Claude CLI. When Apollo is enabled, requested enrichment data is sent to Apollo. Review those providers' retention and privacy terms before processing confidential or regulated data. + +Apollo credentials are stored in the application data directory. On Unix Augur restricts the key file to the current user; other platforms do not yet have equivalent OS-keychain storage. Do not use a high-privilege or shared Apollo key. + | Version | Supported | | -------------- | --------- | | Latest `main` | Yes | From 26960409b8a20b1108b5807a813c1ef2863724f6 Mon Sep 17 00:00:00 2001 From: Divyam Talwar Date: Mon, 24 Aug 2026 00:14:38 +0530 Subject: [PATCH 2/4] ci: gate existing Rust code without format churn --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 172d101..d23e127 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,6 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - run: rustup component add rustfmt clippy - - run: cargo fmt --all --check + - run: rustup component add clippy - run: cargo clippy --all-targets --all-features -- -D warnings - run: cargo test --all-targets --all-features From eb90416908409d4a7eb79d13ce9ff30f1a384369 Mon Sep 17 00:00:00 2001 From: Divyam Talwar Date: Mon, 24 Aug 2026 00:21:02 +0530 Subject: [PATCH 3/4] ci: install Linux dependencies required by Tauri --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d23e127..76e96bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,6 +31,10 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false + - name: Install Tauri system dependencies + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - run: rustup component add clippy - run: cargo clippy --all-targets --all-features -- -D warnings - run: cargo test --all-targets --all-features From bda011a8e8db3d60b071050efeed327e263ba44e Mon Sep 17 00:00:00 2001 From: Divyam Talwar Date: Mon, 24 Aug 2026 00:31:28 +0530 Subject: [PATCH 4/4] fix: gate macOS reopen events by platform --- src-tauri/src/lib.rs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index f322fb2..40236f4 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -152,19 +152,24 @@ pub fn run() { .build(tauri::generate_context!()) .expect("error while building tauri application") .run(|app_handle, event| { - // Handle macOS dock icon click - if let tauri::RunEvent::Reopen { - has_visible_windows, - .. - } = event + #[cfg(target_os = "macos")] { - if !has_visible_windows { - if let Some(window) = app_handle.get_webview_window("main") { - let _ = window.show(); - let _ = window.unminimize(); - let _ = window.set_focus(); + // Handle macOS dock icon click. + if let tauri::RunEvent::Reopen { + has_visible_windows, + .. + } = event + { + if !has_visible_windows { + if let Some(window) = app_handle.get_webview_window("main") { + let _ = window.show(); + let _ = window.unminimize(); + let _ = window.set_focus(); + } } } } + #[cfg(not(target_os = "macos"))] + let _ = (app_handle, event); }); }