Skip to content

feat: Linux-first JARVIS with OpenRouter, CalDAV, IMAP, and Auth#1

Merged
someguy0110 merged 6 commits into
mainfrom
trae/solo-agent-TcH5O7
Jun 7, 2026
Merged

feat: Linux-first JARVIS with OpenRouter, CalDAV, IMAP, and Auth#1
someguy0110 merged 6 commits into
mainfrom
trae/solo-agent-TcH5O7

Conversation

@someguy0110

Copy link
Copy Markdown
Owner

🎯 Changes

1. Linux-First Platform Support

  • Calendar Integration: Replaced macOS-specific calendar integrations with CalDAV support in calendar_access.py, enabling calendar discovery and event fetching on non-macOS platforms.
  • Mail Integration: Introduced IMAP (read-only) backend in mail_access.py for non-macOS, supporting unread counts, message search, and reading.
  • Notes Management: Implemented filesystem-backed notes in notes_access.py for non-macOS, including listing, reading, searching, and creating notes with configurable directories.
  • System Interactions: Updated actions.py for Linux terminal and browser opening, and screen.py for Linux window enumeration (wmctrl/xdotool) and screenshot capture.
  • Documentation & Configuration: .env.example, CLAUDE.md, CONTRIBUTING.md, and README.md updated to reflect Linux-first approach, CalDAV/IMAP/filesystem notes, and xdg-open usage.

2. OpenRouter LLM Integration

  • LLM Client: Replaced Anthropic API usage with an OpenRouter-based LLM client in llm_client.py, supporting configurable fast/research/vision models.
  • Core Logic Migration: Migrated memory.py, planner.py, and server.py to use the new OpenRouter client for memory extraction, planning classification, and chat/research/vision flows.
  • Configuration: .env.example updated with OPENROUTER_API_KEY and related settings; requirements.txt removed anthropic and added icalendar.
  • Frontend Updates: frontend/src/settings.ts updated to use OpenRouter for settings UI and test endpoints.

3. API Authentication & Security

  • Authentication: Added auth token generation and persistence in server.py, with HTTP middleware enforcing authentication and basic rate limiting.
  • Frontend Integration: frontend/src/settings.ts now stores and sends access tokens via Authorization: Bearer header; frontend/src/ws.ts appends the token as a query parameter for WebSocket authentication.
  • Security Enhancements: server.py tightened defaults (bind to 127.0.0.1, restricted CORS origins, optional SSL, dev-mode gating for dangerous endpoints).
  • Configuration: .env.example includes JARVIS_AUTH_TOKEN and allowed origins.

4. Deployment & CI Improvements

  • CI/CD: Added GitHub Actions CI (.github/workflows/ci.yml) to run Python tests and build the frontend on pushes/PRs.
  • Systemd Packaging: Introduced an example systemd --user service unit (docs/systemd/jarvis.service) for running the server on Linux with SSL.
  • Project Directory: Implemented a configurable JARVIS_PROJECTS_DIR in actions.py and server.py, replacing the hardcoded Desktop path.

5. Testing & Development

  • Test Updates: tests/test_browser_integration.py added Playwright binary checks; tests/test_classifier.py updated to use OPENROUTER_API_KEY and the new client loader.
  • Dev Dependencies: requirements-dev.txt added pytest and pytest-asyncio.

💡 Technical Highlights

  • Modular Design: Clear separation of platform-specific integrations (CalDAV/IMAP/filesystem notes) from core logic, allowing for easier extension and maintenance.
  • Unified LLM Interface: Introduction of a generic OpenRouter client wrapper simplifies LLM integration and allows for flexible model selection.
  • Robust Security: Implementation of token-based authentication and rate limiting at both API and WebSocket levels enhances application security.
  • Automated Deployment: CI/CD pipeline and systemd service unit streamline development and deployment workflows, improving reliability and consistency.
  • Configurable Environment: Extensive use of environment variables for sensitive keys, API endpoints, and directory paths ensures flexibility and ease of configuration across different environments.

someguy0110 and others added 6 commits June 6, 2026 14:54
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
@someguy0110

Copy link
Copy Markdown
Owner Author

Haven't tested this yet.

@someguy0110 someguy0110 merged commit f0602a7 into main Jun 7, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant