{"adoption": {"forks": 185, "observed_at": "2026-08-28T04:06:30.284514+00:00", "stars": 2249}, "canonical_url": "https://ross.abutalabs.com/products/gitsync", "card": {"archived": false, "artifact_type": "application", "description": "Mobile Git client for syncing a repository between remote and a local directory", "domain": ["version-control", "developer-tools", "mobile-development", "files"], "enriched": true, "function": ["version-control", "file-system", "scheduling", "developer-tools"], "health_score": 99, "homepage": "https://gitsync.viscouspotenti.al", "language": "Dart", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["ViscousPot/GitSync"], "name": "ViscousPot/GitSync", "platform": ["cross-platform"], "pushed_at": "2026-08-20T06:37:04+00:00", "repo": "ViscousPot/GitSync", "stars": 2249, "tags": ["git-client", "file-sync", "obsidian", "note-sync", "background-sync", "flutter", "markdown-notes", "android", "ios", "mobile"], "topics": ["git", "obsidian", "productivity", "sync"], "urls": [], "use_cases": ["sync obsidian vault between phone and desktop", "sync notes with git on android", "background git sync for a local folder on mobile", "keep logseq graph synced across devices", "resolve git merge conflicts on my phone", "schedule automatic git pull and push on mobile", "sync markdown notes with self-hosted git server"], "what_it_is": "GitSync is a mobile Git client for iOS and Android that syncs a local directory with a remote Git repository in the background. It is popular for keeping Obsidian vaults and other markdown knowledge bases synced across devices via Git.", "when_to_avoid": ["you need a full-featured desktop Git client or complex branching workflows", "you only sync between desktop machines and never use a mobile device", "you need non-Git sync backends like cloud storage drives"], "when_to_choose": ["you want automatic background syncing of a folder to GitHub, GitLab, Gitea, or a self-hosted Git server from a phone", "you keep notes in Obsidian, Logseq, or another markdown editor and want full version history and offline access", "you need flexible sync triggers such as schedules, widgets, Siri Shortcuts, or Tasker intents", "you want a mobile UI for commit, push, pull, and conflict resolution"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/gitsync", "repo": "ViscousPot/GitSync", "role": "main", "score": 86}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:43:53.889039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ccc6e7958d26e17c6f0d1846e2e59ba21251991099ac431485676d7094856ea", "fetched_at": "2026-08-28T04:06:30.284514+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ViscousPot/GitSync"}, {"content_hash": "73eec19e0d719afa7fbc78a1df790b2ac4f4cadb038fe142b46be996143ae235", "fetched_at": "2026-08-29T10:24:01.304586+00:00", "kind": "homepage", "missing": false, "url": "https://gitsync.viscouspotenti.al"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:43:53.889039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ccc6e7958d26e17c6f0d1846e2e59ba21251991099ac431485676d7094856ea", "fetched_at": "2026-08-28T04:06:30.284514+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ViscousPot/GitSync"}, {"content_hash": "73eec19e0d719afa7fbc78a1df790b2ac4f4cadb038fe142b46be996143ae235", "fetched_at": "2026-08-29T10:24:01.304586+00:00", "kind": "homepage", "missing": false, "url": "https://gitsync.viscouspotenti.al"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:43:53.889039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ccc6e7958d26e17c6f0d1846e2e59ba21251991099ac431485676d7094856ea", "fetched_at": "2026-08-28T04:06:30.284514+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ViscousPot/GitSync"}, {"content_hash": "73eec19e0d719afa7fbc78a1df790b2ac4f4cadb038fe142b46be996143ae235", "fetched_at": "2026-08-29T10:24:01.304586+00:00", "kind": "homepage", "missing": false, "url": "https://gitsync.viscouspotenti.al"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:43:53.889039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ccc6e7958d26e17c6f0d1846e2e59ba21251991099ac431485676d7094856ea", "fetched_at": "2026-08-28T04:06:30.284514+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ViscousPot/GitSync"}, {"content_hash": "73eec19e0d719afa7fbc78a1df790b2ac4f4cadb038fe142b46be996143ae235", "fetched_at": "2026-08-29T10:24:01.304586+00:00", "kind": "homepage", "missing": false, "url": "https://gitsync.viscouspotenti.al"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:43:53.889039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ccc6e7958d26e17c6f0d1846e2e59ba21251991099ac431485676d7094856ea", "fetched_at": "2026-08-28T04:06:30.284514+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ViscousPot/GitSync"}, {"content_hash": "73eec19e0d719afa7fbc78a1df790b2ac4f4cadb038fe142b46be996143ae235", "fetched_at": "2026-08-29T10:24:01.304586+00:00", "kind": "homepage", "missing": false, "url": "https://gitsync.viscouspotenti.al"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:43:53.889039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ccc6e7958d26e17c6f0d1846e2e59ba21251991099ac431485676d7094856ea", "fetched_at": "2026-08-28T04:06:30.284514+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ViscousPot/GitSync"}, {"content_hash": "73eec19e0d719afa7fbc78a1df790b2ac4f4cadb038fe142b46be996143ae235", "fetched_at": "2026-08-29T10:24:01.304586+00:00", "kind": "homepage", "missing": false, "url": "https://gitsync.viscouspotenti.al"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:30.284514+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:43:53.889039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ccc6e7958d26e17c6f0d1846e2e59ba21251991099ac431485676d7094856ea", "fetched_at": "2026-08-28T04:06:30.284514+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ViscousPot/GitSync"}, {"content_hash": "73eec19e0d719afa7fbc78a1df790b2ac4f4cadb038fe142b46be996143ae235", "fetched_at": "2026-08-29T10:24:01.304586+00:00", "kind": "homepage", "missing": false, "url": "https://gitsync.viscouspotenti.al"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:43:53.889039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ccc6e7958d26e17c6f0d1846e2e59ba21251991099ac431485676d7094856ea", "fetched_at": "2026-08-28T04:06:30.284514+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ViscousPot/GitSync"}, {"content_hash": "73eec19e0d719afa7fbc78a1df790b2ac4f4cadb038fe142b46be996143ae235", "fetched_at": "2026-08-29T10:24:01.304586+00:00", "kind": "homepage", "missing": false, "url": "https://gitsync.viscouspotenti.al"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:43:53.889039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ccc6e7958d26e17c6f0d1846e2e59ba21251991099ac431485676d7094856ea", "fetched_at": "2026-08-28T04:06:30.284514+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ViscousPot/GitSync"}, {"content_hash": "73eec19e0d719afa7fbc78a1df790b2ac4f4cadb038fe142b46be996143ae235", "fetched_at": "2026-08-29T10:24:01.304586+00:00", "kind": "homepage", "missing": false, "url": "https://gitsync.viscouspotenti.al"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:43:53.889039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ccc6e7958d26e17c6f0d1846e2e59ba21251991099ac431485676d7094856ea", "fetched_at": "2026-08-28T04:06:30.284514+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ViscousPot/GitSync"}, {"content_hash": "73eec19e0d719afa7fbc78a1df790b2ac4f4cadb038fe142b46be996143ae235", "fetched_at": "2026-08-29T10:24:01.304586+00:00", "kind": "homepage", "missing": false, "url": "https://gitsync.viscouspotenti.al"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 58, "rhythm": 86}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 816, "days_push": 13, "days_rel": 14, "gap_med": 4, "n_releases_24m": 66}, "score": 86, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}