Problem Statement
What problem does this solve? Why is this needed?
First, thank you for the incredible work on OpenJarvis. The local-first, on-device personal AI direction is exactly the framework I’ve been looking for.
Right now, I am trying to use OpenJarvis as a unified personal intelligence layer across multiple real-life identities and contexts (personal, work, research projects, family, etc.). In practice, this means managing data across multiple distinct Google accounts.
Currently, the Google connector flow is single-account oriented. Running a bootstrap command like:
jarvis connect gdrive
### Proposed Solution
Introduce support for **named connector profiles / account aliases** across the core credential management layer and CLI.
#### 1. Explicit Parameter Scoping in the CLI
Allow users to isolate credential buckets during authentication:
```bash
jarvis connect google --account personal
jarvis connect google --account work
jarvis connect google --account research
Or at the individual primitive level:
Bash
jarvis connect gdrive --profile personal
jarvis connect gmail --profile work
2. Segmented Storage Hierarchy
Instead of flattening everything into a singular google.json or gdrive.json, store tokens cleanly by account alias:
Plaintext
~/.openjarvis/connectors/google/accounts/personal.json
~/.openjarvis/connectors/google/accounts/work.json
A single OAuth execution should still maintain the convenience of authorizing Gmail, Drive, Calendar, Contacts, and Tasks simultaneously for that single named profile instance (e.g., creating gmail:personal, gdrive:personal, etc.).
3. Source-Aware Document Indexing & Retrieval
Documents emitted by the sync pipelines should embed deterministic profile metadata:
Python
metadata = {
"account": "work",
"connector": "gmail",
"source_email": "user@company.com"
}
This enables Persona-Scoped Queries like:
"Summarize only my work email and calendar from this morning."
"Search my research Drive, but ignore my personal files."
4. Account Filters in Config and Core Primitives
Update the standard tool definitions to accept an optional account argument to prevent accidental cross-account data bleeding:
Python
gmail_search_emails(query="invoice", account="work")
gcalendar_list_events(account="family")
Expose this mapping inside config.toml for specialized Operatives and custom local loops:
Ini, TOML
[connectors.google.accounts.personal]
enabled = true
[connectors.google.accounts.work]
enabled = true
[digest]
accounts = ["personal", "work"]
[agent]
default_accounts = ["personal"]
Potential UX Layout:
Bash
jarvis accounts list
jarvis accounts add personal --provider google
jarvis connect google --account personal
jarvis ask --account work "What critical updates did I miss?"
jarvis ask --accounts personal,work "Where do my calendars conflict today?"
### **Primitive Area**
*Select **`Intelligence`** from your template dropdown, or add this to the text body:*
`Touches: Connectors (Gmail, GDrive, GCalendar), CLI (connect_cmd), Storage/Memory Primitives`
### **Alternatives Considered**
```markdown
### Any alternative solutions or features you've considered.
I have successfully bypassed this manually by isolating completely separate OpenJarvis configuration environments via the shell environment:
```bash
JARVIS_CONFIG_PATH=~/.openjarvis_work/config.toml jarvis connect gdrive
While this successfully keeps credentials separated, it splits the entire workspace, local vector storage backends, and semantic indexes entirely. This fragmentation prevents the Orchestrator from running unified cross-account indexing, cross-calendar conflict analysis, or comprehensive multi-account personal daily digests.
### **Additional Context**
```markdown
### Additional Context
Because OpenJarvis runs entirely on-device, this feature perfectly reinforces its core value proposition. Users shouldn't have to choose between their personal data privacy and their professional data isolation. Bringing multi-account tracking on-device allows absolute corporate/personal boundary enforcement without throwing away the unified utility of a local agent.
I am running on macOS and would be happy to help test/validate experimental m
### Primitive Area
Intelligence
### Alternatives Considered
creating multiple jarvis installs would be clumsy or creating multiple roots and shells to run them
Problem Statement
What problem does this solve? Why is this needed?
First, thank you for the incredible work on OpenJarvis. The local-first, on-device personal AI direction is exactly the framework I’ve been looking for.
Right now, I am trying to use OpenJarvis as a unified personal intelligence layer across multiple real-life identities and contexts (personal, work, research projects, family, etc.). In practice, this means managing data across multiple distinct Google accounts.
Currently, the Google connector flow is single-account oriented. Running a bootstrap command like: