No description
  • Go 95.9%
  • Svelte 2.5%
  • TypeScript 1.1%
  • Shell 0.3%
  • Dockerfile 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ymage 65ad8bea74
All checks were successful
Build xms2db / coverage (push) Successful in 3m6s
/ coverage (push) Successful in 8m36s
Build xms2db / test-race (push) Successful in 10m34s
Build xms2db / build-test-1 (push) Successful in 10m52s
Build xms2db / lint (push) Successful in 11m28s
Build xms2db / build-test (push) Successful in 0s
Build xms2db / release (push) Successful in 44s
/ lint (push) Successful in 17m14s
/ build-test (push) Successful in 17m25s
Build xms2db / build-image (push) Successful in 7m41s
/ test-race (push) Successful in 25m26s
chore(version): Release v0.39.3
2026-10-05 16:09:11 +02:00
.forgejo fix(ci): extend the go test timeout fix to coverage and build-test 2026-09-26 02:49:33 +02:00
cmd/xms2db chore(license): add SPDX identifiers to Go sources 2026-08-30 18:05:26 +02:00
deploy/podman feat(deploy): pull xms2db container image from registry by default 2026-09-23 05:24:15 +02:00
docs docs(cli): describe Rel-based attachment extraction containment 2026-10-05 12:47:13 +02:00
internal test(webapi): keep import job queue alive through test cleanup 2026-10-05 14:42:41 +02:00
scripts feat(scripts): curl UAT script for the full auth flow (D-08) 2026-09-20 22:05:14 +02:00
testdata fix(export): align call export with SyncTech v10.26 format 2026-08-01 02:04:11 +02:00
web chore(web): keep dist/.gitkeep across vite builds 2026-10-02 03:30:29 +02:00
.containerignore feat(deploy): add rootless Podman Quadlet deployment for xms2db serve 2026-09-23 04:18:47 +02:00
.env.example docs(configuration): document XMS2DB_BASE_URL and backfill missing SMTP vars 2026-09-23 04:17:37 +02:00
.gitignore feat(deploy): add rootless Podman Quadlet deployment for xms2db serve 2026-09-23 04:18:47 +02:00
.golangci.yml feat(cli): add the contacts command 2026-08-09 01:36:17 +02:00
.tagme-authors.json chore(changelog): document footer blank-line invariant, add tagme author map 2026-08-09 23:26:39 +02:00
AGENTS.md docs(agents): correct CLI command table and Go version drift 2026-09-26 01:43:16 +02:00
CHANGELOG.md chore(version): Release v0.39.3 2026-10-05 16:09:11 +02:00
CLAUDE.md chore(version): Release v0.13.0 2026-08-09 12:09:33 +02:00
cliff.toml chore(cliff): fix default first tag version 2026-09-23 03:00:23 +02:00
CODE_OF_CONDUCT.md docs(license): add GPL-3.0-or-later license and governance docs 2026-08-30 18:05:23 +02:00
CONTRIBUTING.md docs: split README into topic-focused docs under docs/ 2026-08-30 18:50:01 +02:00
go.mod chore(deps): update go dependencies 2026-10-02 04:05:46 +02:00
go.sum chore(deps): update go dependencies 2026-10-02 04:05:46 +02:00
LICENSE docs(license): add GPL-3.0-or-later license and governance docs 2026-08-30 18:05:23 +02:00
Makefile fix(ci): extend the go test timeout fix to coverage and build-test 2026-09-26 02:49:33 +02:00
mise.toml chore(cliff): fix default first tag version 2026-09-23 03:00:23 +02:00
README.md docs(readme): add grouped tech badges and fix Go badge 2026-10-05 02:37:50 +02:00
SECURITY.md docs(security): correct git hosting reference to Forgejo 2026-08-30 18:05:58 +02:00
TODO.md docs: update AGENTS.md for dedupetui static-header split, close TODO item 2026-08-19 20:46:50 +02:00
UI-REVIEW.md docs: fix stale package list and sync-table inconsistencies 2026-08-20 04:28:06 +02:00
USER-GUIDE.md docs(repair): describe partial undo reporting and re-run 2026-10-05 12:34:51 +02:00

xms2db (Go)

Go tool to import, search, and export Android SMS/MMS/call XML backups into SQLite.

Build Status Version License

Go TypeScript

SQLite

Svelte Vite Tailwind CSS

Linux Podman

Forgejo Conventional Commits

Converts SMS Backup & Restore XML files into a queryable SQLite database with full-text search, a terminal UI, repair tools, and round-trip export. --quiet, --format json, and offline-only operation make it scriptable; clig.dev-compliant.

Documentation

Doc Covers
USER-GUIDE.md Full walkthrough: architecture, data model, command reference, real-world use cases
docs/INSTALLATION.md Requirements, build/install, quick start
docs/COMMANDS.md Command reference (import, query, search, merge, compare, repair, normalize, edit, verify, stats, thread, attachments, config, backup)
docs/BROWSE-TUI.md browse — panes, view modes, key bindings
docs/EXPORT.md export — flags, filters, round-trip notes
docs/DEDUPE-CONTACTS.md dedupe, doctor, contacts
docs/CONFIGURATION.md Global flags, .env, config.toml, browse.toml
docs/ARCHITECTURE.md Package layout, database schema, security hardening
docs/DEPLOYMENT.md Rootless Podman Quadlet deployment (xms2db serve behind a reverse proxy)
CONTRIBUTING.md Build/test/lint, commit conventions, code style

Quick Start

make build                                # binary: xms2db
cp .env.example .env                      # configure db path / default country

xms2db import backup.xml --country FR     # import (TUI shows live progress)
xms2db browse                             # browse messages in the TUI
xms2db search "hello world"               # full-text search
xms2db export output.xml --contact "John" --after 2024-01-01

See docs/INSTALLATION.md for requirements and more examples.

Highlights

  • Browser-based web UI (xms2db serve) — sign up, upload, browse, search, and export through a same-origin browser app served alongside the JSON API
  • Import SMS, MMS, and call logs from compressed backups (.xml, .gz, .bz2, .xz, .zip) and export back to XML, with incremental resume and a live-progress TUI
  • Full terminal UI (browse) for contacts, conversations, calls, and attachments — three panes, three view modes, mouse support, theming
  • Full-text search (FTS5), merge, compare, repair, normalize, verify, and vacuum
  • Nine dedupe/repair checks (dedupe) with an interactive review TUI, plus doctor diagnostics and contacts name/merge tooling
  • Content-addressed attachment storage with automatic deduplication across imports
  • Automatic backup before any destructive operation; soft-delete with undo everywhere it makes sense
  • One-command compressed backup archive (.tar/.tar.gz/.tar.zst/.zip) bundling the database and attachments into one portable file, verified for integrity after write

See the docs table above for full detail on every command and subsystem.

License

Licensed under the GNU General Public License v3.0 or later.

Contributions are welcome — see CONTRIBUTING.md and the Code of Conduct. Report security issues per SECURITY.md rather than as a public issue.

Report issues: https://git.desord.re/eofredj/xms2db-go/issues