跳到正文
GitHub·· 6 天前AI 评分60

Civitas 发布本地优先桌面应用 civitas-desktop

civitass/civitas-desktop

AI 导读

Civitas 在 GitHub 发布桌面应用 civitas-desktop,可回放本地时间线、重建决策原因并生成带证据链接的待办草稿,数据默认留在本机。应用引擎将 API 绑定到 127.0.0.1:3030,支持本地 Ollama 兼容推理或自行接入 OpenAI、Anthropic、OpenRouter、Bedrock 等提供方,凭据由系统密钥库加密。

正文

Civitas Desktop — the memory behind your next move

Remember the moment. Understand the why. Continue with confidence.

Civitas rewinds a private Timeline of your day, recovers why decisions were made,
and drafts evidence-linked next actions — all on your computer.

Download  ·  Build from source  ·  Connect your AI  ·  Privacy boundary

MIT license Platforms Local first Bring your own model

The Civitas Desktop Timeline rewinding a real moment of work — this repository's own GitHub commit history — on a photographed workspace display

Timeline — rewind to a real moment of work: this repository's own commit history, replayed in the Civitas Timeline with the day's scrubber below. Presentation composite. Workspace photograph: DESIGNECOLOGIST, Unsplash.

From the moment to the next move

Remember Understand Continue
Rewind the exact screen, app, meeting, or local transcript. Reconstruct projects, people, decisions, reasons, blockers, and procedures in an evidence-linked graph. Review ranked commitments and open loops with reason, evidence age, uncertainty, and safety state visible.

Civitas is designed for one person recovering context across apps—not for employee monitoring, fleet administration, or a company control plane. Capture, search, Timeline, graph, feedback, and profile metadata stay on your computer by default. AI is either loopback-local or a provider you explicitly connect.

The actual Civitas Desktop Next Actions view showing ranked privacy-safe launch commitments with evidence and safety state

Next Actions — ranked continuations remain reviewable drafts; nothing executes by itself.

The Next Actions and AI-settings shots frame unretouched captures of the real desktop application: the publication E2E suite creates an isolated local profile and deterministic synthetic content—never founder, contributor, or customer data—then verifies the same user-visible surfaces before saving the screenshots, and each shot links to its raw PNG. The Timeline scene above is a designed presentation composite: the real Timeline surface replaying a live capture of this repository's public commit history, shown on a photographed display.

Three everyday wins

When you need to… Civitas helps you… Without hiding…
Recover a decision Search across apps and time, then open the supporting local moment the source, evidence age, or uncertainty
Re-enter a project Reconstruct people, state changes, blockers, procedures, and reasons where the graph inferred a relationship
Close open loops Review ranked commitments and follow-ups in Next Actions confidence, safety state, or your feedback controls

Start in three steps

  1. Download the signed macOS DMG — or the Windows installer, when a release covers it — from GitHub Releases. For other supported development platforms, build from source.
  2. Choose exactly what Civitas may capture. Screen and microphone permissions remain separate, and capture can be paused immediately from the tray.
  3. Search locally first. For Ask and Chat, review and install the optional assistant runtime under Settings → AI, then connect a local model or your own provider credentials.

What you can do

  • Remember the day. Search screen text, accessibility context, and local transcripts across time, apps, projects, and people, with local multilingual OCR including explicit Simplified and Traditional Chinese support.
  • Predict the next move. Pull a ranked set of evidence-backed commitments and open loops, inspect why each one appeared, and choose Done, Not now, or Dismiss. Suggestions never execute by themselves.
  • Ask with evidence. Get an answer that separates direct evidence, synthesis, and uncertainty, with links back to the source.
  • See relationships. Explore decisions and reasons, changing project state, recurring procedures, blockers, and contradictions in the knowledge graph.
  • Keep meeting context. Detect meetings, create local notes, inspect transcripts, and export only what you choose.
  • Use your memory elsewhere. Give a permissioned MCP client bounded, authenticated access to search and provenance-aware graph tools.

The trust contract

Promise What the consumer build does
Local first Capture, media, SQLite/FTS indexes, graph data, feedback, and provider profile metadata live under your local Civitas data directory.
Account-free Capture, search, graph, export, deletion, local AI, and MCP do not require a Civitas login or subscription.
No hidden cloud Railway, Supabase auth, Civitas-hosted AI credits, fleet, team sync, and enterprise policy are not part of the consumer runtime.
Remote access is optional Fresh installs start in Local-only mode. Remote providers, external processes, downloads, and connections require the owner to enable remote features.
Bring your own model Use loopback Ollama-compatible inference or connect OpenAI, Anthropic, OpenRouter, Bedrock, or a compatible endpoint.
Credentials stay protected Persistent keys are encrypted with an OS-vault-backed key; an explicit session-only mode stays in process memory until quit. No plaintext fallback exists.
Capture is controllable The tray shows capturing/paused/private state and provides immediate, timed, and indefinite pause controls. Clipboard and raw typed-text persistence are off by default.
Suggestions are drafts Next Actions exposes evidence, confidence, safety state, and feedback controls. It cannot auto-execute.

Important

A remote AI provider receives the prompt and selected evidence for requests made with that profile. Civitas shows the exact destination and requires a data-boundary acknowledgement before activation. Provider terms, retention, routing, and charges apply. See Bring your own AI.

How it works

Diagram: chosen apps and meetings flow into local capture, a local SQLite store, Timeline and knowledge graph, then Ask, Next Actions, and MCP. AI runs against a loopback local model, or a remote provider only after explicit opt-in.

The desktop app and engine run on the user's computer. The engine binds its authenticated API to 127.0.0.1:3030; there is no LAN setting or service discovery. Local capture and lexical query work without an AI provider.

When an AI feature runs, the loopback inference gateway loads the active profile and credential in Rust. Official provider profiles pin the provider host, reject redirects and URL credentials, and record only bounded technical request metadata—not prompt content—in the local audit table.

Next Actions, rebuilt for trust

The earlier predictive-action concept was recovered from repository history and adapted to the current local architecture as a pull-based feature.

Candidates come from grounded local signals: explicit commitments, deadlines, routines, and open loops you typed; owner-enabled saved-search follow-ups; blockers whose subject later changed state; decisions you were party to that show no recorded follow-through; work you returned to across several captured sessions and then left, named by the pull request, ticket, file, or window title it was done in; and repeated work-graph transitions. A commitment you typed that matches captured work shows that work as evidence on the same card. Every source is deterministic and local. No model runs while candidates are generated or ranked, and the two behavioural sources work without any AI provider configured. Saved-search follow-ups are opt-in, interval-bounded, and reopen the exact local query and filters. The ranker considers evidence strength, recency, confidence, duplication, feedback, cooldowns, and ambiguity, and after a few ratings it learns, within a bounded and explained margin, which kinds of suggestion you keep. It suppresses expired, unsupported, sensitive, or high-risk candidates. The full policy is documented in Next Actions.

Every visible card can show:

  • the proposed action and why it matters;
  • the local evidence and its age;
  • confidence and uncertainty;
  • safety/approval state;
  • Done, Later, Helpful, and Dismiss feedback, each with a bounded Undo.

Marking a commitment done also marks the memory you wrote done, so Memories and Next Actions never disagree. No suggestion sends a message, edits a file, opens a browser, or invokes an integration automatically.

Choose where AI runs

Choice Credential Destination Useful when
Local loopback None 127.0.0.1 / localhost You want prompts and evidence to remain on the computer
OpenAI API Project API key api.openai.com Your OpenAI API project provides the models/capabilities you need
Anthropic Anthropic API key api.anthropic.com You want direct Claude Messages API access
OpenRouter OpenRouter API key openrouter.ai and the chosen upstream route You want a routed model catalog
Amazon Bedrock Short-term key, AWS profile, or temporary access keys Region-pinned Bedrock Runtime You manage models and access in AWS
Compatible endpoint Optional API key Exact HTTPS or loopback host shown in Settings You operate a trusted OpenAI-compatible server

The actual Civitas Desktop AI settings showing local inference and supported bring-your-own-provider choices

Settings → AI — choose the boundary first; add a credential only when a remote provider is intentional.

The app provides save, replace, test, activate, and delete flows. Diagnostics use the fixed prompt Reply with OK. and never return the credential. Provider setup and the capability catalog document the exact contract.

Conversational Ask and Chat additionally use an optional local assistant runtime. It is absent on first launch: opening the app or Chat never downloads it. Settings → AI shows its exact package/version, registry destination, data boundary, and storage location before an explicit Install runtime action. Civitas installs from its reviewed frozen lockfile with the bundled Bun sidecar and disabled lifecycle scripts; it never falls back to system npm or a global agent. Core capture, search, graph, export, and MCP features do not need this runtime. The same card can stop active assistant sessions and remove the managed packages without deleting work data, provider profiles, or credentials.

Optional personal connections have separate boundaries. WhatsApp pairing installs a pinned, unofficial gateway only after an explicit action; startup cannot download its runtime. Its private transport sits behind the engine's authenticated connection routes. External MCP requests reject redirects so an endpoint cannot forward credentials or tool data elsewhere. See the network boundary for destinations and limits.

Install on macOS

  1. Open GitHub Releases.
  2. Download the DMG for Apple Silicon or Intel and its checksum manifest.
  3. Verify the checksum, Developer ID signature, notarization ticket, and GitHub provenance using Release verification.
  4. Drag Civitas Desktop to Applications.
  5. Grant only the capture permissions you intend to use.
  6. Start with Local only, or add a provider in Settings → AI.

Official automation builds, signs, notarizes, staples, installs, verifies, and attaches every artifact to a protected draft. It publishes that draft only after the exact-commit CI, code signatures for every platform in the release, notarization, updater signatures, checksums, SBOM, provenance, and isolated installation gates all pass. A missing credential or failed gate leaves no advertised release for that platform.

Install on Windows

Windows binaries ship once Authenticode signing credentials are configured; until then a release covers macOS only and you can build from source. Check the release assets for the platforms a given version actually covers.

  1. Open GitHub Releases.
  2. Download Civitas-Desktop_<version>_x64-setup.exe and SHA256SUMS.
  3. Verify the checksum, GitHub provenance, and Authenticode publisher using Release verification.
  4. Run the installer. Windows 10 22H2 or later and Windows 11 are supported on x86-64 computers.
  5. Grant only the capture permissions you intend to use, then choose Local AI or add your own provider in Settings → AI.

The official Windows artifact is release-blocked unless both the application and installer have a valid timestamped Authenticode signature. Civitas does not publish an unsigned package as an official release, and does not hold the verified macOS artifacts back while Windows signing is pending — see Release verification for how each release records the platforms it covers.

Build from source

The repository pins Rust 1.93.1 and Bun 1.3.10.

git clone https://github.com/civitass/civitas-desktop.git
cd civitas-desktop

cargo build --locked

cd apps/civitas-app-tauri
bun install --frozen-lockfile
bun run tauri dev

An optimized, locally signed macOS bundle:

cd apps/civitas-app-tauri
./scripts/build_macos.sh --bundles app

The helper applies and verifies the development signature after building. This local app is not a notarized official release. Platform prerequisites, Windows/Linux commands, feature flags, generated bindings, and release-vs-source differences are in Building.

Connect an MCP client

The safest setup is Settings → Connections, where Civitas can write a client configuration with the exact package version and a dedicated, server-enforced read-only credential. The device-owner API key is never copied to an MCP client.

The configuration copied by Civitas has this shape:

{
  "mcpServers": {
    "civitas": {
      "command": "npx",
      "args": ["-y", "civitas-mcp@0.18.10"],
      "env": {
        "CIVITAS_MCP_CREDENTIAL": "<issued-by-civitas>",
        "CIVITAS_MCP_SCOPES": "read"
      }
    }
  }
}

Use the in-app copy action rather than substituting the device-owner key manually. Client credentials expire after 90 days by default and can be inspected, rotated, or revoked under AI client access. Do not commit the credential. MCP results enter the connected client and may be sent to that client's model provider. The full scope and transport model is in Civitas MCP.

Architecture

Layer Main code Responsibility
Desktop apps/civitas-app-tauri Tauri v2, Next.js, onboarding, capture controls, Ask, graph, timeline, provider and connection settings
Engine/API crates/civitas-engine Loopback Axum API, capture orchestration, retrieval, inference gateway, graph workers, Next Actions
Screen/accessibility crates/civitas-screen, crates/civitas-a11y, crates/civitas-capture Event-driven local context capture
Audio crates/civitas-audio Local devices, VAD, transcription adapters, speaker/meeting pipeline
Storage crates/civitas-db, crates/civitas-vault, crates/civitas-secrets SQLite/FTS, media vault, encrypted credentials
Knowledge crates/civitas-mining and engine graph workers Episodes, entities, claims, decisions, procedures, provenance, resolution
Connections crates/civitas-connect Optional vault-backed local/personal integrations and safe local proxies
MCP packages/civitas-mcp Scoped bridge from trusted MCP clients to the authenticated loopback API

Key local endpoints include:

GET  /search
GET  /activity-summary
GET  /kg/entities/:name
GET  /kg/decisions
GET  /kg/procedures
GET  /kg/blockers
POST /kg/precedents
GET  /next-actions
POST /next-actions/feedback
GET  /next-actions/quality
POST /v1/chat/completions
GET  /health

Use the reviewed checked-in OpenAPI snapshot when building an integration. A running engine also serves its generated description at http://127.0.0.1:3030/openapi.yaml. Live requests require the local bearer credential. Authentication cannot be disabled in the consumer build.

Privacy and security

For a stricter local session, pre-stage local models and launch with CIVITAS_NETWORK_MODE=deny. This blocks reviewed remote inference, optional product analytics, model downloads, and update paths. Crash diagnostics are local files and are never uploaded automatically. Network-deny mode is not a substitute for an OS firewall; the network document explains the remaining explicit integration boundaries.

Documentation

Project principles

  1. Evidence before fluency.
  2. Abstain when personal history does not support an answer.
  3. Local and visible before remote and ambient.
  4. Permission is specific, revocable, and never inferred from captured text.
  5. A suggestion is a draft until the user acts.
  6. Privacy/security regressions block release.

Contributing

Privacy bugs, groundedness failures, accessible interaction improvements, local model support, retrieval quality, and careful platform testing are especially welcome. Read CONTRIBUTING.md and CODE_OF_CONDUCT.md before opening a change.

For vulnerabilities, do not open a public issue; follow SECURITY.md.

Contributors

Civitas is shaped by Chuyue Wang and Eric Bi, alongside the open-source work acknowledged in NOTICE.md.

Civitas mark

Local first · account-free · bring your own model

来源:GitHub · github.com