Self-hosted service for syncing Chrome extension metadata and artifacts into the Simprint backend.
English | 简体中文
Simprint Extension Sync Server is a backend service that discovers Chrome extensions, downloads CRX packages, extracts metadata, analyzes permissions, and syncs the resulting data into the Simprint backend.
It is intended for self-hosted or controlled deployments where extension metadata, icons, manifests, and update status need to be kept in sync without relying on a third-party managed sync pipeline.
Chrome extension metadata is not convenient to manage at scale by hand. Keeping manifests, icons, versions, CRX packages, and permission classifications aligned across a backend system quickly becomes repetitive and error-prone.
This service exists to turn that into a repeatable pipeline. It periodically checks extension updates, downloads artifacts, processes extension metadata, and pushes structured data into the Simprint backend through a dedicated API client.
- Scheduled sync pipeline: Run full sync and update-check jobs on configurable intervals.
- CRX download and parsing: Fetch CRX packages and inspect real manifest contents instead of depending only on store page summaries.
- Permission risk analysis: Classify extension permissions against a configurable high-risk permission list.
- Artifact extraction: Process extension icons and upload extension-related assets alongside metadata.
- Backend sync API: Push structured extension data into the Simprint backend through authenticated API requests.
- Operational HTTP API: Expose health checks, sync triggers, stats, and extension registry endpoints for manual control and diagnostics.
- Python 3.11+
uv- A reachable server
Copy the example files, then fill in your backend URL and optional sync presets. API key credentials are only needed when the target backend requires authenticated access:
cp configs/config.example.yaml configs/config.dev.yaml
cp configs/extensions.example.yaml configs/extensions.yaml
uv sync
uv run python -m src.main --env devBy default the service listens on http://localhost:8080.
If you only want to run ad hoc sync jobs without starting the HTTP service, you can use:
uv run python -m scripts.sync_all
uv run python -m scripts.sync_single <extension_id>Use configs/config.{env}.yaml for runtime settings and configs/extensions.yaml for preset extensions.
If they do not exist yet, start from:
configs/config.example.yamlconfigs/extensions.example.yaml
The service falls back to the example files when custom config files are missing.
The most commonly adjusted fields are:
backend.api_urlbackend.api_key_id(optional, must be paired withbackend.api_key_secret)backend.api_key_secret(optional, must be paired withbackend.api_key_id)storage.sqlite_pathhttp.port
Simprint Extension Sync Server is being prepared for open collaboration as part of the broader Simprint open-source refactoring work.
The current repository is already usable, but some deployment conventions, default configuration choices, and backend integration contracts are still being cleaned up for long-term maintainability.
This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3).
If you want to use Simprint Extension Sync Server in a way that does not comply with the AGPLv3 obligations, including distributing modified versions or providing modified versions as a closed-source service, please contact us for a commercial license.