Skip to content

Simprint/simprint-extension-sync-server

Repository files navigation

Simprint Extension Sync Server

Self-hosted service for syncing Chrome extension metadata and artifacts into the Simprint backend.

License AGPLv3 Python 3.11+ Framework FastAPI

English | 简体中文


Introduction

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.

Why Simprint Extension Sync Server?

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.

Features

  • 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.

Quick Start

Prerequisites

  • Python 3.11+
  • uv
  • A reachable server

Run locally

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 dev

By 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>

Configuration

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.yaml
  • configs/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_url
  • backend.api_key_id (optional, must be paired with backend.api_key_secret)
  • backend.api_key_secret (optional, must be paired with backend.api_key_id)
  • storage.sqlite_path
  • http.port

Status

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.

License

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.

About

Self-hosted FastAPI service for syncing Chrome extension metadata, CRX artifacts, manifests, icons, and permission analysis into Simprint.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors