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