Praveenkumar101508/supracloud-ira

GitHub: Praveenkumar101508/supracloud-ira

一款本地优先的个人 AI 助手系统,将聊天、语音、记忆、研究与受控操作整合在用户自有硬件上,实现完全私有可控的智能体验。

Stars: 3 | Forks: 0

SupraCloud IRA
[![Built by Praveen Kamineti](https://img.shields.io/badge/built_by-Praveen_Kamineti-7c8bff?style=for-the-badge&labelColor=0d1220)](https://github.com/Praveenkumar101508) [![Python](https://img.shields.io/badge/python-3.11-5ee0f0?style=for-the-badge&logo=python&logoColor=white&labelColor=0d1220)](#) [![FastAPI](https://img.shields.io/badge/FastAPI-0.115-5ee0f0?style=for-the-badge&logo=fastapi&logoColor=white&labelColor=0d1220)](#) [![LangGraph](https://img.shields.io/badge/LangGraph-0.2.73-7c8bff?style=for-the-badge&labelColor=0d1220)](#) [![Local-first](https://img.shields.io/badge/runs-local--first_by_default-28c840?style=for-the-badge&labelColor=0d1220)](#) [![License](https://img.shields.io/badge/license-Apache--2.0-f0c674?style=for-the-badge&labelColor=0d1220)](#license) ### Your AI. Your hardware. Your rules. **Forever.** IRA is a local-first personal intelligence system: an everyday assistant, a governed LifeOS for memory and action, an evidence-driven engineering environment, and an experimental cognitive kernel. It routes work to local models, keeps owner data on your machine by default, and requires explicit approval before sensitive or outbound actions. Cloud providers are optional, never a runtime requirement.
## See it in action
IRA answering a query, fully on-device A live loop of IRA taking a request, routing it to the right agent, and streaming a reply — all local. GW["nginx · TLS · rate limits"] GW --> UI["Next.js PWA"] UI --> API["FastAPI · owner authorization"] subgraph CORE["Assistant core"] M["Retrieve bounded memory"] --> C["Classify and route"] --> B["Voiceprint / policy gate"] --> A["Specialist agent"] end API --> CORE A -. "local reasoning" .-> CX[["Cortex · localhost"]] CX --> OL[("Ollama · routed model tiers")] subgraph LIFE["LifeOS and governed action"] LG["Temporal memory · privacy · commitments"] --> SW["Shadow World simulation"] SW --> AP["Risk gate · owner approval"] --> EX["Email · calendar · notes"] EX --> TL["Trust Ledger · Proof Card"] end API --> LIFE API -. "IRA_FORGE_ENABLED" .-> F["IRA Forge · worktrees · verification · evidence"] API -. "IRA_NEUROKERNEL_ENABLED" .-> NK["NeuroKernel · cycles · calibration · immune gate"] NK -. "proposal only" .-> SW A --> DB[("PostgreSQL + pgvector")] LG --> DB TL --> DB API --> VOICE["Whisper · local TTS · wake word · biometrics"] API --> WRK["Briefings · monitors · self-heal · backup"] classDef accent fill:#10204a,stroke:#5ee0f0,color:#e3ecfb,stroke-width:1.5px; classDef store fill:#0f1830,stroke:#7c8bff,color:#cdd9ee,stroke-width:1.5px; class API,CORE,LIFE,CX,F,NK accent; class OL,DB store; Every user turn flows through the same pipeline: **recall relevant memory → route to a specialist → check the voiceprint gate → answer → learn from it.** Conversation state survives restarts; the reasoning engine never talks to anything outside `127.0.0.1`. Inside that pipeline, a text turn is shaped like this: User message → Chat/API layer → Model router (picks local_fast / local_main / local_reasoning / local_coding / local_vision) → Answer-quality layer (tier system prompt + task-specific answer policy) → Memory context selector (ranked, capped, labelled "reference only") → Local Ollama model → Verification checks (rule-based, report-only) → Final answer For a request the router flags as very hard: User message → Model router detects high complexity → IRA offers Deep Intelligence Mode → User approves or chooses Local Mode → If approved AND IRA_ALLOW_EXTERNAL_API=true AND an external executor is registered → it may run → Otherwise the answer stays local ## LifeOS: memory, action and trust LifeOS turns stored facts into an owner-governed operating model without treating memory as an instruction channel. Temporal memory records provenance, confidence, sensitivity, validity windows, supersession and soft deletion. A deterministic contradiction guard pauses conflicting writes so the owner can **replace**, **keep both with provenance**, or **discard**. Privacy envelopes default data to owner-private and make membership, grants and revocation explicit. Sensitive actions use one enforced backend path: Owner request → owner authorization → deterministic Shadow World simulation → risk-derived approval requirement → append intent to Trust Ledger → execute the approved email / calendar / notes operation → append result evidence → return a verifiable Proof Card Critical actions are blocked, not merely warned about. File operations can carry rollback snapshots, and the currently exposed side-effect routes—email send, note deletion, and CalDAV create/delete—use the governed execution path. Action Studio makes the policy, simulation, approvals and resulting evidence visible; Today and Life Map provide fail-soft owner views over the same real data. | Owner API | Purpose | | --- | --- | | `GET /api/v1/today` | Commitments, Forge activity, ledger head and security state, aggregated fail-soft. | | `GET /api/v1/life-map` | People, projects, goals, commitments, events and relationships. | | `GET /api/v1/action-studio` | Configured actions, pending approvals, policy and recent evidence. | | `GET /api/v1/trust/ledger` | Hash-chain verification and recent immutable action records. | ## IRA Forge: governed engineering Forge is an OFF-by-default engineering control plane, not an unrestricted coding bot. It compiles work into typed tasks, assigns declared capabilities, creates isolated worktrees and advances through an enforced lifecycle from intake and specification through repository mapping, implementation, verification, PR evidence, owner approval and post-merge observation. Failure states route back to the correct phase instead of being hidden. - **Code intelligence** builds repository, symbol, dependency, blast-radius and read-only history views, then selects a bounded context without executing repository code. - **Specialist orchestration** decomposes work while preserving task risk floors and capability limits. External network access, push and self-merge are not granted. - **Verification Factory** combines deterministic, executable, evidence and adversarial gates; protected-path checks and secret scanning are blocking. - **Proof-carrying delivery** derives an evidence manifest from real gate artifacts and records measured engineering outcomes. Unsupported success claims fail verification. - **Evaluation and release** include the repository-grounded 100-task `IRA-Forge-Eval`, plus an installable `ira` CLI for plans, context, verification, evaluation, outcomes and local release packages. Release output includes source, CycloneDX SBOM, provenance and SHA-256 checksums. The owner-only API lives at `/api/v1/forge` (`status`, task creation/list/detail and legal state advancement). `IRA_FORGE_ENABLED=false` is the default. Signing uses only a locally configured owner GPG key; the release workflow never pushes. ## NeuroKernel: measurable synthetic cognition NeuroKernel is an experimental planning layer behind independent feature flags. Its bounded global workspace arbitrates percepts, owner goals, a transparent self/world model and homeostatic drives. A deterministic untrained local transition model proposes futures; each cognitive cycle compares 2–8 alternatives before the safety brainstem returns a plan. Plans have `executed=false` and can only propose work to the same Shadow World and owner-approval boundary used elsewhere. The closed loop is measurable: every owner prediction accepts exactly one outcome, and the system reports Brier score, expected calibration error, success rate and safety incidents. Calibration is withheld until at least 20 mixed outcomes exist and no safety incident is recorded. The cognitive immune layer quarantines suspicious low-trust percepts before they reach attention, beliefs or sleep consolidation while preserving audit evidence. Measured outcomes do **not** update neural weights; plasticity candidates remain quarantined until separately evaluated and activated. NeuroConsole exposes focus, workspace competition, goals, drives, predictions, cycles, calibration, quarantines, capabilities, devices and manual sleep without granting execution power. The owner-only API is under `/api/v1/cognition`; the Android/AOSP interface is a capability contract only and is OFF by default. See [`docs/neuroos/NEUROKERNEL.md`](docs/neuroos/NEUROKERNEL.md). ### Data migrations for the new control planes | Migration | Adds | | --- | --- | | `017_temporal_memory.sql` | Temporal/provenance fields, confidence, sensitivity, supersession, soft deletion and embedding version. | | `018_lifeos_commitments_events.sql` | Commitments and append-only LifeOS events. | | `019_privacy_envelopes.sql` | Owner-private envelopes, memberships, grants and revocation. | | `020_trust_ledger.sql` | Hash-chained action evidence and database append-only guards. | | `021_neurokernel.sql` | Optional NeuroKernel persistence. | | `022_cognitive_loop.sql` | Immutable cognitive cycles, predictions, outcomes and quarantine evidence. | ## Model routing IRA classifies each request and resolves it to one of seven **local** model roles instead of using one model for everything. The active profile is chosen by `IRA_MODEL_PROFILE` (default `balanced_local`): local_fast qwen3:8b local_main qwen3:14b local_reasoning deepseek-r1:14b local_coding qwen3-coder-next local_vision gemma3:12b memory_embedding bge-m3 fallback_tiny gemma3n:e4b `low_resource` and `strong_local` profiles are also shipped for weaker or more capable machines — see [`docs/MODEL_SELECTION.md`](supracloud-jarvis/ira/docs/MODEL_SELECTION.md) for the full tables. - If a preferred model isn't installed, IRA degrades down a **local-only** fallback chain (e.g. `local_reasoning → local_main → local_fast → fallback_tiny`) — it never silently switches to an external API. - `IRA_USE_MODEL_ROUTER=true` (the default) wires the router into the live chat and vision paths; setting it to `false` pins the legacy static model selection. - Routing, fallback, and consent behaviour are covered by the `tests/reasoning` suite (see [Testing](#testing)). ## Deep Intelligence Mode (optional, consent-gated) For a task the router flags as genuinely hard, IRA can _offer_ to use an external frontier model — it never switches to one on its own. Going external requires **all** of: 1. explicit user approval for that specific request, 2. `IRA_ALLOW_EXTERNAL_API=true` (default `false`), and 3. a registered external executor — **none ships with IRA by default**, so out of the box the feature is decision-only and cannot call out. The offer, when shown, reads: - `IRA_PRIVACY_MODE=local_only` suppresses the offer entirely — every answer is then served by a local model. - Every consent decision (offered / approved / declined / blocked / unavailable) emits a structured audit event with **safe metadata only** (timestamp, privacy mode, selected model, provider, cost tier) — never prompt text or secrets. - See [`docs/MODEL_ROUTING_VERIFICATION_REPORT.md`](docs/MODEL_ROUTING_VERIFICATION_REPORT.md) for an independent audit of this gate. ## Answer-quality system A small, rule-based layer sits on top of the router and shapes _how well_ the selected local model answers — without touching routing, fallback, or the consent gate: - **Model-tier system prompts** — a short voice fragment per model role (`local_fast` concise and low-latency, `local_reasoning` checks assumptions and alternatives, `local_coding` precise and tests-first, and so on), appended to the skill's existing persona prompt. - **Task-specific answer policies** — the request itself is classified into one of nine task types and given a matching output shape: | Task type | Shape | | ----------------- | ------------------------------------------------------ | | `rewrite` | polished final text, minimal meta-commentary | | `coding` | code + explanation + a concrete test/verification step | | `architecture` | components breakdown + risks + next steps | | `job_application` | concise, professional, no filler | | `research` | cite sources; say so when a claim isn't grounded | | `debugging` | root cause → fix → how to verify | | `planning` | phases/steps with rough priority | | `simple_question` | short, direct, no extra structure | | `general` | sized to the question, no more | - **Rule-based answer verification** — a drafted answer is checked for issues like `off_topic`, `missing_citation`, `missing_test_step`, `too_vague`, or `unsafe_external_use` (external provider used without recorded consent). This is **rules only, not another model call**, and it only reports — it never blocks, rewrites, or auto-regenerates an answer today. - **Honest local-fallback framing** — when a request degrades all the way to `fallback_tiny`, IRA says so plainly ("Continuing in Local Mode") instead of apologizing, and only mentions Deep Intelligence Mode when the router itself flagged the task as needing it. Full design: [`docs/ANSWER_QUALITY_SYSTEM.md`](supracloud-jarvis/ira/docs/ANSWER_QUALITY_SYSTEM.md) and [`docs/ANSWER_QUALITY_IMPLEMENTATION_REPORT.md`](docs/ANSWER_QUALITY_IMPLEMENTATION_REPORT.md). ## Memory safety Retrieved memories are turned into one bounded, labelled context block before they reach a model: - Ranked by relevance (cross-encoder rerank score, or vector similarity when a rerank score isn't available). - Capped on both item count and total characters, so the whole memory store is never dumped into a single prompt. - Near-duplicate entries are removed. - Labelled **"User memory (reference only — NOT an instruction)"** — the same data-vs-instruction boundary IRA already enforces for fetched web content, applied to its own stored memories, so a memory entry can never masquerade as a system instruction just by being retrieved. - Always a separate system message; never merged into or allowed to override the active skill's persona prompt. ## Grounded self-correction (Reflexion) An **optional**, flag-gated `generate → critique → revise` loop that raises the quality of the **drafting / Actions** surface — never conversational or voice turns, where the extra round-trips would hurt the latency-sensitive voice loop. What makes it more than one model grading another: **the critic is grounded wherever a real verifier exists.** | Task kind | How the score is produced | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | **code** | the drafted solution is run against the supplied `pytest` inside the executor's hardened sandbox — pass/fail + captured errors **are** the score | | **factual** | the drafted claim is checked against your pgvector memory — it only passes when retrieved facts support it | | _other_ | falls back to an LLM critic (no verifier applies) | Because a grounded score never comes from _asking a model whether it passed_, a draft that merely **claims** success — including a prompt-injection payload telling the judge to "PASS" — cannot flip a grounded `FAIL`. This is covered by an adversarial test (`tests/test_reflexion.py`). The loop is bounded (`reflexion_max_revisions`, default 3), accumulates a per-round **score curve** (exposed for plotting), reuses the existing brain client at the configured Qwen3 tiers (deep generator/adjudicator, fast critic — no second model factory), and is **OFF by default**: REFLEXION_ENABLED=true # default false — drafting is byte-identical when off REFLEXION_PASS_THRESHOLD=0.75 # critique score in [0,1] needed to PASS REFLEXION_MAX_REVISIONS=3 # hard cap on revise rounds Code: `ira/agents/reflexion.py` (subgraph) · `ira/agents/reflexion_ground.py` (verifiers) · wired into `ira/api/routes/document_create.py` and the Actions drafting path `ira/actions/drafting.py` (`POST /actions/email/draft` — reply drafting where the incoming message is isolation-wrapped and injection-scanned; drafting never sends). ## Security — defense in depth IRA includes a defense-in-depth security architecture for local and controlled deployments, but any internet-exposed deployment still requires production hardening, monitoring, and security review. The model isn't "one wall" — it's layers, so a breach of any one still hits the next, gets logged, and is contained. | Layer | Protection | Status | | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | | **Identity** | JWT + bcrypt, constant-time login, TOTP 2-factor | ✅ live | | **Sessions** | Short-lived tokens, `jti` revocation, instant logout-all, opt-in fail-closed-on-Redis | ✅ live | | **Brute force** | Per-IP rate limiting + per-account exponential lockout | ✅ live | | **Owner authorization** | Verified-owner checked _inside_ every sensitive tool (email, calendar, security) — fail-closed, not just at the classifier | ✅ live | | **Self-modification** | Architect apply path owner-gated; protected-paths denylist refuses any patch touching auth / safety / router / config / CI | ✅ live | | **Outbound (SSRF)** | Single hardened guard (`net_safety`): one allow-check over _all_ resolved A/AAAA records — blocks loopback, RFC1918, link-local (cloud metadata), IPv4-mapped IPv6, and decimal/hex/octal/`0.0.0.0` literal bypasses | ✅ live | | **SSRF residual (TOCTOU)** | `is_safe_url()` validates at check time but the HTTP client re-resolves at connect time, so a DNS rebind remains possible; high-risk fetches must pin via `resolve_pinned()` (connect to the validated IP) — not yet enforced on every path | ⚠️ documented residual | | **Exfiltration** | Egress guard blocks secrets / keys / local paths leaving | ✅ live | | **Reasoning engine** | Reasoning-only skills run the local engine with tools disabled (`--accept-hooks` dropped + enforced no-tools wrapper) | ✅ live | | **Commands** | Two-gate allowlist, shell-free execution, allow-roots resolved at call time | ✅ live | | **Actions** | Draft → confirm approval for every side-effect | ✅ live | | **Prompt injection** | Web & tool output treated as data, never instructions | ✅ live | | **Tripwires** | Canary tokens fire instantly on any intruder touch | ✅ live | | **Detection** | Live monitor → security events → Telegram/email alerts | ✅ live | | **Response** | Bounded auto-playbooks (block IP, rotate, snapshot) | ✅ live | | **Exposure guard** | `DEV_MODE` refused on a non-loopback bind host unless explicitly opted in (domain label alone isn't trusted) | ✅ live | | **Data at rest** | Owner-held-key vault + encrypted secrets | 🚧 roadmap | ## Tech stack
![FastAPI](https://img.shields.io/badge/FastAPI-009688?style=flat-square&logo=fastapi&logoColor=white) ![LangGraph](https://img.shields.io/badge/LangGraph-1c3d5a?style=flat-square) ![Ollama](https://img.shields.io/badge/Ollama-local_LLMs-5ee0f0?style=flat-square) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-pgvector-4169E1?style=flat-square&logo=postgresql&logoColor=white) ![Redis](https://img.shields.io/badge/Redis-DC382D?style=flat-square&logo=redis&logoColor=white) ![Next.js](https://img.shields.io/badge/Next.js_15.5-000000?style=flat-square&logo=nextdotjs&logoColor=white) ![React](https://img.shields.io/badge/React_19-20232A?style=flat-square&logo=react&logoColor=61DAFB) ![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white) ![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat-square&logo=docker&logoColor=white)
- **Reasoning** — local Ollama, model-routed per task (`local_fast`/`local_main`/`local_reasoning`/`local_coding`/`local_vision`) behind the **Cortex** out-of-process engine; reasoning-only skills run with the toolset disabled - **Memory** — PostgreSQL + pgvector (HNSW), local embeddings + reranker, per-owner isolation - **Voice** — Whisper STT, OmniVoice / Supertonic / Kokoro TTS, ECAPA voiceprint gate, owner-gated wake word, Indic language support - **Actions** — local-first IMAP email triage, CalDAV calendar, on-disk notes — all simulation-, approval- and evidence-gated - **LifeOS** — temporal PostgreSQL records, privacy envelopes, commitments/events, Shadow World, Trust Ledger and Proof Cards - **Engineering** — Forge worktrees, code intelligence, verification/evidence factory, CLI, evaluation and release packaging - **Cognition** — deterministic local transition model, bounded workspace and calibration ledger; planning-only and OFF by default - **Frontend** — Next.js 15.5 PWA (installable on phone or desktop) + an optional Expo mobile companion - **Quality** — latest merged evidence: 1,395 passing backend tests, 11 environment-gated skips, 9 passing frontend unit tests and a successful strict Next.js 15.5.20 production build, plus adversarial injection, owner-gate, model-routing, Forge and NeuroKernel suites ## Quick start # 1. clone git clone https://github.com/Praveenkumar101508/supracloud-ira.git cd supracloud-ira/supracloud-jarvis # 2. configure (copy the template, fill in your values — nothing here phones home) cp .env.example .env # 3a. native (recommended on your own box) — Windows ./start-ira.ps1 # 3b. native — Linux / macOS / WSL2 ./start-ira.sh # and ./stop-ira.sh to shut down # 3c. or containerised, for a scale-out box docker compose -f docker-compose.cloud.yml up -d Then open the app, enrol your voice + TOTP, and say hello. Full setup notes — including the PostgreSQL/pgvector, Redis, Python, and Node prerequisites — live in [`LOCAL_SETUP.md`](supracloud-jarvis/LOCAL_SETUP.md) and [`TAILSCALE_SETUP.md`](supracloud-jarvis/TAILSCALE_SETUP.md). Setup today is a scripted multi-step process (prereqs → `.env` → Python venv → `npm install`), not a single command — the setup scripts above automate most of it. ### Recommended Ollama pulls `balanced_local` (default) / `strong_local`: ollama pull qwen3:8b ollama pull qwen3:14b ollama pull deepseek-r1:14b # or deepseek-r1:32b for strong_local ollama pull qwen3-coder-next ollama pull gemma3:12b ollama pull bge-m3 ollama pull gemma3n:e4b `low_resource` (weaker machines): ollama pull qwen3:4b ollama pull deepseek-r1:8b ollama pull qwen3-coder-next ollama pull gemma3:4b ollama pull nomic-embed-text ollama pull gemma3n:e4b You don't have to pull everything up front — if a preferred model is missing, IRA falls back to the next available local model automatically. ### Environment configuration Model-routing and consent settings are documented separately in [`ira/config/model_selection.env.example`](supracloud-jarvis/ira/config/model_selection.env.example); copy the ones you want into your `.env`: IRA_MODEL_PROFILE=balanced_local IRA_USE_MODEL_ROUTER=true IRA_ALLOW_EXTERNAL_API=false IRA_REQUIRE_API_CONSENT=true IRA_PRIVACY_MODE=local_first IRA_LOCAL_FAST_MODEL=qwen3:8b IRA_LOCAL_MAIN_MODEL=qwen3:14b IRA_LOCAL_REASONING_MODEL=deepseek-r1:14b IRA_LOCAL_CODING_MODEL=qwen3-coder-next IRA_LOCAL_VISION_MODEL=gemma3:12b IRA_EMBEDDING_MODEL=bge-m3 IRA_FALLBACK_TINY_MODEL=gemma3n:e4b All of the above are optional — with none set, IRA runs `balanced_local` and never uses an external API. The experimental control planes have independent, OFF-by-default switches. Enable only what you are actively evaluating; persistence, neural plasticity and Android/AOSP registration should remain disabled until their separate gates are satisfied: IRA_FORGE_ENABLED=false IRA_BRAIN_ENABLED=false IRA_NEUROKERNEL_ENABLED=false IRA_NEUROKERNEL_PERSISTENCE_ENABLED=false IRA_NEUROKERNEL_PLASTICITY_ENABLED=false IRA_NEUROKERNEL_ANDROID_ENABLED=false ### Testing Backend, from `supracloud-jarvis/ira/`: # Windows ../.venv/Scripts/python.exe -m pytest -q # Linux / macOS / WSL ../.venv/bin/python -m pytest -q Frontend, from `supracloud-jarvis/frontend/`: npm test npm run build The latest merged feature verification recorded **1,395 passed, 11 skipped** for the backend, **9 passed** for the frontend, and a successful strict Next.js 15.5.20 production build. Those are historical results from the actual run documented in [`PR-80-cognitive-loop-calibration.md`](docs/prs/PR-80-cognitive-loop-calibration.md), not a promise about an untested machine. Install backend test dependencies from [`ira/requirements-test.txt`](supracloud-jarvis/ira/requirements-test.txt). ## Daily use (Personal v1) The current milestone is **IRA Personal v1** — IRA fully usable by the owner every day, before any public release. Feature-by-feature honesty lives in [`STATUS.md`](STATUS.md). **Start IRA** cd supracloud-jarvis ./start-ira.sh # Linux/macOS/WSL — checks Python/Node/Ollama/Postgres/Redis/.env, # then starts the API and UI, opens the dashboard, # and prints "ALL UP. IRA is ready, boss." ./start-ira.ps1 # Windows native (same checks, same order) One-click launchers (Beta) wrap the same scripts for double-click daily use: **`Start IRA.bat`** on Windows and **`Start IRA.command`** on macOS (both in `supracloud-jarvis/`). They run the full dependency checks, start the backend and frontend, open the dashboard in your browser, and keep the window open so you can read the summary. No secrets live in the launchers — configuration stays in `.env`. **First run** — the first successful login opens a one-time setup wizard: create your owner profile (you are the Owner Admin), choose how IRA should address you (*Sir / Boss / your name / custom*), confirm local-only privacy, run a live system check (backend, Ollama, Postgres, Redis), and optionally set up voice and the wake word (default `ira`). Setup is marked complete only at the final step — if you close it midway, it reruns next time. Afterwards the dashboard greets you with *“Welcome back, boss.”* (or whatever title you picked). Rerun it any time from Owner Profile → *Run setup again*, or `POST /api/v1/onboarding/reset`. **Chat** — open `http://localhost:3000`, log in with your admin username + password (+ TOTP if enrolled), and talk in the main chat. Each reply shows which agent and model handled it. **Workspace panels** — the sidebar's Workspace section switches between the Personal v1 views (chat is never lost when you switch away): - **Dashboard** — system readiness from `/health` (Postgres, Redis, model tiers), the current privacy posture, and quick actions into every other panel. - **Memory Vault** — list, search and filter your curated memories; save new ones with a category (`profile`, `projects`, `job_search`, `goals`, ...), edit, pin/unpin. *Forget* is always two-step: the backend returns a confirmation preview and only confirming that exact draft deletes. Memories are reference-only data for IRA — never instructions. - **Trust Console** — renders `GET /api/v1/trust/status` verbatim: privacy mode, external-API switch, model/DB locality, voice enrollment, pending approvals, last login and live security warnings. The green shield appears only when the backend itself reports `local_only`. - **Voice Setup** — enrolment status plus a guided in-browser enrolment: read 5 phrases (the first is a one-time anti-replay challenge), clips are converted to 16 kHz WAV in memory and uploaded once; only embeddings are stored. Also hosts **Wake Mode v1** (Beta): an on/off toggle with an always-visible mic state (*off / listening / awake / processing*). Wake Mode is OFF by default, detection is local-only, only the enrolled owner's voice can wake IRA, raw audio never touches disk, and the toggle cannot change privacy or external-API settings. - **Owner Profile** — your name, preferred address ("boss", "sir", your name, or custom — IRA uses it naturally, not in every sentence), wake word, and voice flag. The role is fixed to Owner Admin: full access to every feature, but destructive and outbound actions still ask for confirmation first — that rule applies to everyone, including the owner. - **People & Relationships** (in the Memory Vault, Beta) — tell IRA who people are ("Rahul is my friend", "remember Anitha is my wife"); IRA confirms before saving and stores it as reference data with **no system access**. Granting access is a separate security event: the wizard needs the role choice (Viewer / Trusted User / Family Admin / Owner Equivalent), the person's **own** new username and password, **your owner password** (never bypassed, not even in dev mode), and a final confirmation. Voice can ask, but can never complete an access change. Delegated logins are default-denied everywhere except chat and basic voice, nobody can remove or replace the primary owner, and every access change lands in an audit log. - **Command Center** (Beta) — say what you want and IRA plans it, asks only when the risk requires it, then does the work and reports back. Each command becomes a visible plan (intent, steps, risk level). Low-risk reversible commands ("save a memory", "open memory vault", "check if my app is running") run immediately; medium-risk ones ("create a project", "create a private database for project Aurora") show the exact plan and run only after you approve it; high-risk ones need your owner password. Say "create a private database for project Aurora" and IRA creates a local-only Postgres database with its own user, writes the credentials to a `chmod 600` file under the local secrets dir (never logged, never committed), and records the project in the Memory Vault. Access grants, deletions, outbound actions and security changes can never run from a plain command — they route to their own confirmation-gated flows, and unrecognised commands get a clarifying question instead of a guessed action. - **Today** — a fail-soft daily operating view over live commitments, events, and trust state. One unavailable subsystem does not hide the sections that are still healthy. - **Life Map** — a dependency-free interactive graph of your people, projects, goals, and commitments. Select a node for details; graph and relationship stores remain independently fail-soft. - **Action Studio** — a safe action control plane showing configured capabilities, pending approvals, enforced execution policy, Proof Cards, and recent Trust Ledger evidence. The first email action is always a simulation; the second owner-confirmed step is the only execution path. - **Trust Ledger** — recent hash-chained action evidence with verification status sourced from the backend rather than a decorative success badge. - **NeuroConsole** (Experimental) — when NeuroKernel is enabled, inspect focus, workspace competition, goals, drives, alternative futures, prediction outcomes, calibration and cognitive immune quarantines. Manual sleep is available, but the panel cannot execute a plan or silently activate plasticity. - **Agent activity** — lives in the right rail during chat: per-run agent cards plus a "Last run" readout of what the backend actually reported (agent, model, memories used, approval requirement). Anything unreported shows "Not reported yet". **Voice** — the browser voice loop is on by default (`NEXT_PUBLIC_VOICE_TRANSPORT=browser`). Speak after the wake word (`hey ira`) or use push-to-talk; replies are spoken via the local Supertonic engine. Voice enrolment is easiest from the Voice Setup panel (or via `GET /api/v1/voice/challenge` + `POST /api/v1/voice/enroll`) — only the embedding is stored, raw audio is never kept. Voice is optional: password login always works, so you cannot lock yourself out. **Shut down** ./stop-ira.sh # stops the API + UI (+ Ollama only if the script started it) **Troubleshooting** - `start-ira.sh` prints a `[FAIL]` line per missing dependency with the fix inline. - Backend logs: `.ira-run/ira-api.log`; frontend logs: `.ira-run/frontend.log`. - API self-diagnosis: `GET /health` (liveness) and `GET /health/detail` (per-pillar). - If voice replies 503, Supertonic isn't installed — chat keeps working (`pip install supertonic`). ## Project layout supracloud-jarvis/ ├─ ira/ │ ├─ agents/ # the specialist agents + the LangGraph │ ├─ api/ # FastAPI routes + auth middleware │ ├─ actions/ # local email / calendar / notes behind governed execution │ ├─ coding/ # Forge tasks, code intelligence, worktrees, verification, eval, release │ ├─ cognition/ # NeuroKernel workspace, models, cycles, calibration, immune layer │ ├─ lifeos/ # temporal memory, privacy, commitments, Shadow World │ ├─ trust/ # hash-chained ledger and Proof Cards │ ├─ research/ # deep web-research engine (sanitised, egress-guarded) │ ├─ reasoning/ # model router, profiles, consent gate, answer-quality layer │ ├─ memory/ # pgvector store, embeddings, reranker │ ├─ voice/ # STT, TTS, voiceprint gate, wake word, languages │ ├─ worker/ # briefings, monitors, self-heal, backup │ ├─ utils/ # safety (net_safety, cmd_safety), security, playbooks, tools │ ├─ skills/ # per-agent prompts (SKILL.md) │ ├─ subagents/ # Expert-Mode deliberation team │ ├─ config/ # model_profiles.yaml, model_system_prompts.yaml, env examples │ ├─ scripts/ # CI guards (e.g. AST no-push check) │ └─ cortex_bridge.py # local reasoning gateway ├─ frontend/ # Next.js 15.5 / React 19 PWA ├─ mobile/ # optional Expo companion app (off by default) ├─ postgres/ # schema migrations ├─ third_party/ # vendored deps + upstream LICENSE/NOTICE └─ docs/ # ops + incident runbooks ## Documentation - [`ARCHITECTURE.md`](ARCHITECTURE.md) — components, data flow, local-first model, extension points - [`SECURITY.md`](SECURITY.md) — threat model, auth, secrets policy, how to report issues - [`CONTRIBUTING.md`](CONTRIBUTING.md) — setup, branch workflow, test expectations - [`CITATION.cff`](CITATION.cff) — citation metadata - [`docs/architecture/IRA_MASTER_PLAN.md`](docs/architecture/IRA_MASTER_PLAN.md) — staged roadmap, governance gates and architecture invariants - [`docs/architecture/ARCHITECTURE_CONSTITUTION.md`](docs/architecture/ARCHITECTURE_CONSTITUTION.md) — binding safety, evidence and owner-authority rules - [`docs/neuroos/NEUROKERNEL.md`](docs/neuroos/NEUROKERNEL.md) — cognition model, safety boundary, calibration and Android capability ABI - [`docs/prs/`](docs/prs/) — implementation records for Forge, LifeOS, Trust Ledger, owner surfaces, NeuroKernel and the closed cognitive loop - [`docs/progress/SESSION_HANDOFF.md`](docs/progress/SESSION_HANDOFF.md) — exact current branch, test evidence and resume point - [`docs/audits/CURRENT_REPOSITORY_AUDIT.md`](docs/audits/CURRENT_REPOSITORY_AUDIT.md) — current repository audit and risk register - [`ira/docs/MODEL_SELECTION.md`](supracloud-jarvis/ira/docs/MODEL_SELECTION.md) — model roles, profiles, fallback chains, consent behaviour - [`docs/MODEL_ROUTING_VERIFICATION_REPORT.md`](docs/MODEL_ROUTING_VERIFICATION_REPORT.md) — independent audit of the router + consent gate - [`ira/docs/ANSWER_QUALITY_SYSTEM.md`](supracloud-jarvis/ira/docs/ANSWER_QUALITY_SYSTEM.md) — system prompts, answer policies, verifier, memory context design - [`docs/ANSWER_QUALITY_IMPLEMENTATION_REPORT.md`](docs/ANSWER_QUALITY_IMPLEMENTATION_REPORT.md) — implementation report and test results ## Roadmap - [x] Multi-agent core, voice, memory, proactive workers - [x] Full defense-in-depth security layer + live monitoring - [x] Local-first actions (email · calendar · notes) + optional mobile companion - [x] Tool-layer owner authorization + self-modification guardrails - [x] Local-first model routing + consent-gated Deep Intelligence Mode - [x] Answer-quality layer (tier prompts, task policies, verifier, memory context) - [x] Temporal/provenance memory, privacy envelopes, commitments, contradiction resolution - [x] Shadow World governed execution, append-only Trust Ledger, Proof Cards and wired side effects - [x] Today, Life Map, Action Studio, Trust Ledger, and Memory Guardian owner surfaces - [x] Forge task lifecycle, code intelligence, specialist orchestration and Verification Factory - [x] 100-task IRA-Forge-Eval, engineering outcomes and proof-carrying delivery evidence - [x] Installable `ira` CLI + SBOM, provenance, checksum and owner-key tag-signing workflow - [x] NeuroKernel foundation, NeuroConsole, multi-future cycles, outcome ledger and calibration metrics - [ ] Wire answer-verifier findings into live telemetry (log-only first) - [ ] Recency-aware memory ranking using `created_at` - [ ] Bring the answer-quality layer into the Cortex path once Cortex is primary - [ ] Evaluate NeuroKernel on real owner outcomes before enabling persistence or any plasticity - [ ] Build and verify a separately governed Android/AOSP executor; the repository currently ships only the capability contract - [ ] Improve the portable demo mode and move toward a one-command local setup - [ ] Owner-held-key encryption vault (data at rest) - [ ] Passkeys / WebAuthn login - [ ] Global lockdown kill-switch - [ ] SaaS multi-tenancy, production observability, and deployment hardening ## License SupraCloud IRA is licensed under the [Apache License 2.0](LICENSE). Third-party components under `third_party/` retain their own upstream licenses and notices.
Built and owned by Praveen Kamineti (Praveen Kumar) · part of the SupraCloud sovereign-AI vision.
© Praveen Kamineti — all rights reserved.
标签:AI个人助理, AI风险缓解, AV绕过, FastAPI, LangGraph, LifeOS, Python, 无后门, 本地优先, 本地大模型, 逆向工具