Skip to content
PluginStats

@kontourai/ferry weekly downloads statistics

By kontourai (4 listings) · npm · Claude Code

Migrate AI conversations between tools — importers and exporters for @kontourai/thread

View on npm Stale · Oct 17, 2026

@kontourai/ferry has 7,335 recorded weekly downloads on npm, an increase of 190% over the past 30 days, ranking #998 of 2,256 tracked listings.

Weekly downloads
7,335
Official API · Oct 17, 2026
7-day growth
-25.4%
-2.5K weekly downloads
30-day growth
+190%
+4.8K weekly downloads
90-day growth
—
Insufficient history
Rank
#998
Among tracked npm listings

About @kontourai/ferry

@kontourai/ferry

Migrate AI conversations between tools. Importers and exporters for @kontourai/thread, plus the ferry CLI.

Input formats: claude-code, codex, opencode (opencode export JSON), kiro, pi, muse (Muse Code muse export JSON), chatgpt-export, thread. Output formats: thread, openai-chat, anthropic-messages, gemini, markdown.

Importers are grounded in real transcript shapes (including multi-hundred-MB JSONL files, which stream); each adapter documents what its target format cannot represent.

ferry rows emits one JSON object per tool call (or --csv for a narrower projection), streamed per file so it can be pointed at a whole sessions directory. Each row carries the dimensions the schema keeps in different places — source/sourceVersion/cwd/gitBranch from the thread, model/provider from the owning assistant message, the tool's name and raw arguments, parsedArguments when the source supplied structure, derived for importer heuristics, and isError/toolResultId/resultStatus/resultChars joined from the matching ToolResult by toolCallId. Result columns are ABSENT for an unpaired call: a missing result is not a successful one, and resultChars counts result TEXT only, so a result carrying just an image reads as 0. An observed result with unknown standing leaves isError absent rather than being fabricated as false; its resultStatus remains unknown.

Unlike convert/usage, a bad input is warned about and skipped rather than aborting the run: exit 0 means every input was read, 2 means the run completed with inputs skipped, and 1 stays reserved for a fatal error. A file that simply contains no conversation (a sessions directory holds non-transcript sidecars) is reported but is not a skip — it is a normal outcome, not a failure.

There is no sidechain column: in current Claude Code versions subagent traffic lives in separate transcript files rather than inline sidechain lines, so such a column would be permanently false. It returns when an importer reads those files.

--csv cells are emitted verbatim, including a leading =, +, - or @, which a spreadsheet may interpret as a formula. That is deliberate — escaping would corrupt every legitimate -1 and every command starting with a flag — so prefer --jsonl into a query engine for untrusted data.

claude-code-duplicate-toolcall.jsonl is composed: it reproduces the real writer behaviour of emitting one assistant line twice (same uuid, same message.id), which the importer merges by message.id — observed once across 72,735 rows of a local corpus.

Codex fixture provenance: codex-forked-rollout.jsonl (lines 1-4 = rollout 2026-06-25T23-06-53-019f0252 lines 19-22) and codex-rollout-variants.jsonl (lines 1-4 = rollout 2026-03-27T22-21-41-019d32ad lines 8, 10, 11, 15) are byte-copied from real local rollouts — only free-text values are replaced with [redacted]; keys, nesting, and every non-text value remain as written by Codex. codex-rollout.jsonl is a composed fixture whose individual usage records mirror observed shapes. codex-exec-program.jsonl is composed, with each exec payload shaped after the dominant real form measured across a 12.2 GB local corpus: a single double-quoted cmd string (255,070 occurrences) rather than an array (6 occurrences, none of them JSON-parseable — which is why array literals are deliberately not recovered), plus the single-quoted and backtick variants (1,009 / 3,472) and two apply_patch payloads, one of which contains tools.map( in its diffed source because that shape defeated an earlier gate.

Tool-result identity is deterministic and namespaced (ferry::sha256:…), computed only from source record anchors and a source result index. It never uses a call id, output text, timestamp, or prose-derived result status. Claude Code, Codex, OpenCode, Kiro, Pi, and Muse imports capture the observed identity/status surface documented in their adapter headers; ChatGPT exports contain no byte-real tool-result mapping in the retained fixture and remain intentionally unmapped.

The retained Claude Code, OpenCode, Kiro, and Pi fixtures prove their listed success forms but do not contain a byte-real failed tool result. Their error markers therefore remain unknown rather than being promoted from composed examples; adding an error mapping requires an observed writer record and its fixture provenance.

License: Apache-2.0

Description from the npm listing.

  • ai
  • conversation
  • migration
  • import
  • export
  • claude-code
  • codex
  • opencode
  • chatgpt

README badge

Show your rank in a README or on your website. The badge updates automatically.

Charts

Images: 30d · 1y · all time · 1600×900 dark

Adoption over time

@kontourai/ferry weekly downloads on npm, last 90 days: 7,335 weekly downloads as of Oct 17, 2026.@kontourai/ferryWeekly downloads on npm · Last 90 days7,335downloads / week05K10K15K20KJul 19Aug 3Aug 18Sep 2Sep 17Oct 2Oct 17downloads / weekobservedarchived (Internet Archive)no observationsJul 22, 2026 – Oct 17, 2026 · 88 observations · Updated Oc…pluginstats.com
@kontourai/ferry weekly downloads on npm, last 90 days: 7,335 weekly downloads as of Oct 17, 2026.

7/30/90-day growth

@kontourai/ferry weekly downloads growth on npm: -25.4% over 7 days, +190% over 30 days, 90-day growth unavailable.@kontourai/ferryWeekly downloads growth on npm7,335downloads / week now7-day growth-2,497 weekly downloads-25.4%30-day growth+4,807 weekly downloads+190%90-day growth+7,335 weekly downloadsInsufficient historyGrowth vs. nearest observation to each baseline date · Updated Oct 17, 2026pluginstats.com
@kontourai/ferry weekly downloads growth on npm: -25.4% over 7 days, +190% over 30 days, 90-day growth unavailable.

Ranking history

@kontourai/ferry npm ranking history: currently #998 (by weekly downloads).@kontourai/ferrynpm ranking · by weekly downloads · Last 90 days#998current rank#300#400#500#600#700#800#900#1000Jul 21Aug 5Aug 20Sep 4Sep 19Oct 4Oct 19rankOct 17, 2026 – Oct 19, 2026 · 3 observations · Updated Oct 17, 2026pluginstats.com
@kontourai/ferry npm ranking history: currently #998 (by weekly downloads).

Listing placement

All npm2,256 listings · 113 pages · 1,130 shown · page 50, #18 (overall #998)
All npm: every listing in weekly downloads order

Listing placement

Claude Code233 listings · 12 pages · page 2, #20 (overall #40)
Claude Code: every listing in weekly downloads order

Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.

Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.

Recent observations

Full history (543)
Recent weekly downloads observations for @kontourai/ferry
Date (UTC)Weekly downloadsChange vs. previous
7,335-1.2K
8,535+2K
6,486-577
7,063-998
8,0610
8,061-78
8,139-1.7K
9,832-1.2K
10,986-1.1K
12,078-2.9K
15,012-655
15,667-2.2K
17,862-35
17,897—

Similar npm Claude Code plugins

All 20 @kontourai/ferry alternatives

Data source

Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.

Listing: https://www.npmjs.com/package/@kontourai/ferry. First seen Oct 16, 2026; last successful collection Oct 19, 2026. See the methodology.