{"id":30850447,"url":"https://github.com/LogicLabs-OU/OpenArchiver","last_synced_at":"2025-09-07T06:03:33.893Z","repository":{"id":304154237,"uuid":"1017305713","full_name":"LogicLabs-OU/OpenArchiver","owner":"LogicLabs-OU","description":"A secure, sovereign, and affordable open-source platform for email archiving and eDiscovery.","archived":false,"fork":false,"pushed_at":"2025-09-06T15:06:59.000Z","size":9218,"stargazers_count":603,"open_issues_count":15,"forks_count":18,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-09-06T16:25:40.765Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://openarchiver.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LogicLabs-OU.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":".github/CLA.md"}},"created_at":"2025-07-10T10:30:55.000Z","updated_at":"2025-09-06T15:08:43.000Z","dependencies_parsed_at":"2025-07-30T15:13:33.996Z","dependency_job_id":"2bd265bf-6222-48c5-a558-7a41007afad1","html_url":"https://github.com/LogicLabs-OU/OpenArchiver","commit_stats":null,"previous_names":["logiclabs-ou/openarchive","logiclabs-ou/openarchiver"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/LogicLabs-OU/OpenArchiver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LogicLabs-OU%2FOpenArchiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LogicLabs-OU%2FOpenArchiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LogicLabs-OU%2FOpenArchiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LogicLabs-OU%2FOpenArchiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LogicLabs-OU","download_url":"https://codeload.github.com/LogicLabs-OU/OpenArchiver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LogicLabs-OU%2FOpenArchiver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274001212,"owners_count":25205211,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-07T06:01:39.229Z","updated_at":"2025-09-07T06:03:33.881Z","avatar_url":"https://github.com/LogicLabs-OU.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","\u003ca name=\"email\"\u003e\u003c/a\u003eEmail"],"sub_categories":[],"readme":"# Open Archiver\n\n[![Docker Compose](https://img.shields.io/badge/Docker%20Compose-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white)](https://www.docker.com)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-4169E1?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)](https://www.postgresql.org/)\n[![Meilisearch](https://img.shields.io/badge/Meilisearch-FF5A5F?style=for-the-badge\u0026logo=meilisearch\u0026logoColor=white)](https://www.meilisearch.com/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)\n[![Redis](https://img.shields.io/badge/Redis-DC382D?style=for-the-badge\u0026logo=redis\u0026logoColor=white)](https://redis.io)\n[![SvelteKit](https://img.shields.io/badge/SvelteKit-FF3E00?style=for-the-badge\u0026logo=svelte\u0026logoColor=white)](https://svelte.dev/)\n\n**A secure, sovereign, and open-source platform for email archiving and eDiscovery.**\n\nOpen Archiver provides a robust, self-hosted solution for archiving, storing, indexing, and searching emails from major platforms, including Google Workspace (Gmail), Microsoft 365, PST files, as well as generic IMAP-enabled email inboxes. Use Open Archiver to keep a permanent, tamper-proof record of your communication history, free from vendor lock-in.\n\n## 📸 Screenshots\n\n![Open Archiver Preview](assets/screenshots/dashboard-1.png)\n_Dashboard_\n\n![Open Archiver Preview](assets/screenshots/archived-emails.png)\n_Archived emails_\n\n![Open Archiver Preview](assets/screenshots/search.png)\n_Full-text search across all your emails and attachments_\n\n## 👨‍👩‍👧‍👦 Join our community!\n\nWe are committed to build an engaging community around Open Archiver, and we are inviting all of you to join our community on Discord to get real-time support and connect with the team.\n\n[![Discord](https://img.shields.io/badge/Join%20our%20Discord-7289DA?style=for-the-badge\u0026logo=discord\u0026logoColor=white)](https://discord.gg/MTtD7BhuTQ)\n\n[![Bluesky](https://img.shields.io/badge/Follow%20us%20on%20Bluesky-0265D4?style=for-the-badge\u0026logo=bluesky\u0026logoColor=white)](https://bsky.app/profile/openarchiver.bsky.social)\n\n## 🚀 Live demo\n\nCheck out the live demo here: https://demo.openarchiver.com\n\nUsername: admin@local.com\n\nPassword: openarchiver_demo\n\n## ✨ Key Features\n\n- **Universal Ingestion**: Connect to any email provider to perform initial bulk imports and maintain continuous, real-time synchronization. Ingestion sources include:\n    - IMAP connection\n    - Google Workspace\n    - Microsoft 365\n    - PST files\n    - Zipped .eml files\n\n- **Secure \u0026 Efficient Storage**: Emails are stored in the standard `.eml` format. The system uses deduplication and compression to minimize storage costs. All data is encrypted at rest.\n- **Pluggable Storage Backends**: Support both local filesystem storage and S3-compatible object storage (like AWS S3 or MinIO).\n- **Powerful Search \u0026 eDiscovery**: A high-performance search engine indexes the full text of emails and attachments (PDF, DOCX, etc.).\n- **Thread discovery**: The ability to discover if an email belongs to a thread/conversation and present the context.\n- **Compliance \u0026 Retention**: Define granular retention policies to automatically manage the lifecycle of your data. Place legal holds on communications to prevent deletion during litigation (TBD).\n- **Comprehensive Auditing**: An immutable audit trail logs all system activities, ensuring you have a clear record of who accessed what and when (TBD).\n\n## 🛠️ Tech Stack\n\nOpen Archiver is built on a modern, scalable, and maintainable technology stack:\n\n- **Frontend**: SvelteKit with Svelte 5\n- **Backend**: Node.js with Express.js \u0026 TypeScript\n- **Job Queue**: BullMQ on Redis for robust, asynchronous processing. (We use Valkey as the Redis service in the Docker Compose deployment mode, but you can use Redis as well.)\n- **Search Engine**: Meilisearch for blazingly fast and resource-efficient search\n- **Database**: PostgreSQL for metadata, user management, and audit logs\n- **Deployment**: Docker Compose deployment\n\n## 📦 Deployment\n\n### Prerequisites\n\n- [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/)\n- A server or local machine with at least 4GB of RAM (2GB of RAM if you use external Postgres, Redis (Valkey) and Meilisearch instances).\n\n### Installation\n\n1.  **Clone the repository:**\n\n    ```bash\n    git clone https://github.com/LogicLabs-OU/OpenArchiver.git\n    cd OpenArchiver\n    ```\n\n2.  **Configure your environment:**\n    Copy the example environment file and customize it with your settings.\n\n    ```bash\n    cp .env.example .env\n    ```\n\n    You will need to edit the `.env` file to set your admin passwords, secret keys, and other essential configuration. Read the .env.example for how to set up.\n\n3.  **Run the application:**\n\n    ```bash\n    docker compose up -d\n    ```\n\n    This command will pull the pre-built Docker images and start all the services (frontend, backend, database, etc.) in the background.\n\n4.  **Access the application:**\n    Once the services are running, you can access the Open Archiver web interface by navigating to `http://localhost:3000` in your web browser.\n\n## ⚙️ Data Source Configuration\n\nAfter deploying the application, you will need to configure one or more ingestion sources to begin archiving emails. Follow our detailed guides to connect to your email provider:\n\n- [Connecting to Google Workspace](https://docs.openarchiver.com/user-guides/email-providers/google-workspace.html)\n- [Connecting to Microsoft 365](https://docs.openarchiver.com/user-guides/email-providers/imap.html)\n- [Connecting to a Generic IMAP Server](https://docs.openarchiver.com/user-guides/email-providers/imap.html)\n\n## 🤝 Contributing\n\nWe welcome contributions from the community!\n\n- **Reporting Bugs**: If you find a bug, please open an issue on our GitHub repository.\n- **Suggesting Enhancements**: Have an idea for a new feature? We'd love to hear it. Open an issue to start the discussion.\n- **Code Contributions**: If you'd like to contribute code, please fork the repository and submit a pull request.\n\nPlease read our `CONTRIBUTING.md` file for more details on our code of conduct and the process for submitting pull requests.\n\n## 📈 Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=LogicLabs-OU/OpenArchiver\u0026type=Date)](https://www.star-history.com/#LogicLabs-OU/OpenArchiver\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLogicLabs-OU%2FOpenArchiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLogicLabs-OU%2FOpenArchiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLogicLabs-OU%2FOpenArchiver/lists"}