x-molt — archive search & cleanup
~ x-molt
  x-molt v1.0.0
  shed the old, keep what matters
  ┌─ ARCHIVE ───────────────────────────────────────┐
  │   Import Archive [FREE]
  │    Browse & Search Tweets [FREE]
  │    Generate Embeddings [FREE]
  │    Analytics Dashboard [FREE]
  │    Batch Delete [~$0.01/tweet]
  ├─ LIVE API ──────────────────────────────────────┤
  │    Timeline · Post · Search [pay-per-use]
  │    DMs · Followers · Lists [pay-per-use]
  ├─ TOOLS ────────────────────────────────────────┤
  │    Cost Dashboard [FREE]
  └────────────────────────────────────────────────┘
  ↑↓ navigate   ⏎ select   q quit
~

Parse. Search. Clean.

Import your full X/Twitter data archive, generate semantic embeddings, search by meaning — then batch delete with surgical precision. All from your terminal, all on your machine.

$ npx x-molt click to copy
View Source

How It Works

The archive pipeline.

Download your data from X, then let x-molt turn it into a searchable, cleanable local database.

01 Import

Parse Your Archive

Drop in your X data export (.zip or .js files). Auto-discovers structure, validates with Zod, loads into local SQLite.

02 Embed

Generate Embeddings

Run Transformers.js locally to create vector embeddings for every tweet, DM, like, and note. Zero API calls.

03 Search

Find by Meaning

FTS5 for exact keywords. Semantic search for concepts like “regrettable hot takes”. Browse by date tree.

04 Delete

Batch Clean

Filter by date, keywords, replies, retweets. Preview, then delete at ~180/hr with pause, resume, and ETA.

# Import your archive
$ x-molt → Import Archive → ~/twitter-archive.zip
✓ Parsed 24,817 tweets · 3,291 DMs · 12,405 likes
✓ Stored in ~/.local/share/x-molt/archive.db (48 MB)
# Generate semantic embeddings (runs locally)
$ → Generate Embeddings
⎛ Embedding tweets... 24,817/24,817 [████████████] 100%
✓ Vector index built — semantic search ready
# Search by meaning, not just keywords
$ → Browse Tweets → Search: “regrettable hot takes”
  Found 847 semantically similar tweets
# Batch delete with filters
$ → Batch Delete → before:2020-01-01 keyword:“crypto”
  Matched 312 tweets · Estimated cost: $3.12
  Deleting... 312/312 [████████████] ~$0.01/tweet
✓ Done. 312 tweets removed. Session cost: $3.12

Core Features

Built around the archive.

Archive features are completely free — you only pay X’s API cost when you delete.

📦

Archive Import FREE

Handles .zip and extracted .js from X’s data export. Auto-discovers file structure, validates with Zod schemas, stores tweets, DMs, likes, followers, and ad data in local SQLite.

🧠

Semantic Embeddings FREE

Generate vector embeddings locally via Transformers.js. Runs on your CPU — no API calls, no data leaving your machine. Embeds tweets, DMs, likes, and notes.

🔍

Dual Search FREE

FTS5 full-text search for exact keyword matches. sqlite-vec semantic search for concepts and meaning. Date tree navigation with split-pane detail views.

🗑

Batch Delete ~$0.01/tweet

Filter by date range, keywords, replies, retweets. Preview before committing. Rate-limited to ~180/hr for safety. Pause/resume with ETA. Idempotent — tracks deletions.

📊

Analytics FREE

Activity heatmaps, engagement patterns, privacy audit, and ad targeting analysis. Multiple tabbed dashboards surfacing insights from your archive data.

💰

Cost Tracking FREE

Every API call shows its price upfront. Session, daily, monthly, and all-time dashboards with per-endpoint breakdowns and sparkline charts.


And More

Full X client. If you want it.

Beyond the archive pipeline, x-molt is a complete X terminal client with transparent pay-per-use pricing.

Timeline ~$0.05

Browse home feed and own tweets with inline actions.

Post Tweet $0.01

Compose with 280-char counter, preview, post.

Search X ~$0.05

Search recent tweets across all of X.

DM Inbox ~$0.20

Split-pane conversations, compose, send.

Followers ~$0.20

Browse, follow, unfollow, block, mute.

Lists ~$0.20

View, create, and manage your lists.

Bookmarks ~$0.05

Browse and manage bookmarked tweets.

Interactions $0.015

Like, retweet, bookmark from any view.


Architecture

Built for devs who read the source.

~8,500 lines of strict TypeScript. Clean layers, modular services, full type safety.

┌─ UI Layer — Ink 5 (React for CLI)
17 Screens
15 Components
6 Hooks
Split-pane · Date tree · Tabs
├─ Service Layer
archive-parser
embeddings
vector-store
archive-store
cost-tracker
rate-limiter
twitter-client
└─ Data Layer
SQLite + FTS5
sqlite-vec
Zod Schemas
Transformers.js
OAuth 1.0a

Tech Stack

⚛️
Ink 5
Terminal UI
🤝
TypeScript
Strict mode
🗃️
better-sqlite3
Local database
🔎
FTS5
Full-text search
🧠
Transformers.js
Local embeddings
📐
sqlite-vec
Vector search
🛡️
Zod
Validation
tsup
ESM build

Philosophy

Your data never leaves your machine.

No third-party services. No cloud. No telemetry. Just a TypeScript TUI running locally.

🗃️

Local SQLite

Your entire archive, embeddings, and cost history live in a single database on your filesystem.

🧠

On-Device Embeddings

Vector embeddings generated locally via Transformers.js. Your tweet content never hits an external API.

🔑

Your Keys, Your Control

Credentials stored with chmod 600 in ~/.config/x-molt/. Direct OAuth 1.0a with X — no middleman.

👁️

Transparent Costs

Every API call shows its cost upfront. Cost badges on every menu item. Full spend dashboards.


Get Started

Five minutes to a searchable archive.

From install to semantic search in four steps.

1

Install

Run npx x-molt or npm i -g x-molt. Requires Node 18+.

2

Download Your Archive

Go to X → Settings → Your Account → Download an archive.

3

Import & Embed

Point x-molt at your .zip. It parses, validates, and stores everything. Then generate embeddings for semantic search.

4

Search & Clean

Search by keyword or meaning. Browse by date. Batch delete what you don’t want.

$ npx x-molt click to copy