npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

codaio

v0.4.0

Published

CLI for the Coda API v1

Readme

codaio

A CLI for the Coda API v1, designed for use by AI agents (Claude Code, Cursor, etc.) and humans alike.

Installation

npm install -g codaio
# or
bunx codaio

Authentication

Generate an API token at https://coda.io/account, then:

codaio login

codaio login stores the token in ~/.config/codaio/config.json.

Or set the CODA_API_TOKEN environment variable (takes priority over the stored token). This is mainly useful when you want other tools like curl to reuse the same token; the CLI itself already reads the saved config.

Usage

codaio [options] [command]

Options:
  --format <format>  Output format: json (default) or table

Commands:
  login              Authenticate with an API token
  logout             Remove stored token
  whoami             Show current user

  docs list          List docs
  docs get           Get a doc by ID
  docs create        Create a new doc
  docs delete        Delete a doc

  tables list        List tables in a doc
  tables get         Get a table by ID or name

  columns list       List columns in a table

  rows list          List rows in a table
  rows get           Get a row by ID or name
  rows upsert        Insert or upsert rows
  rows update        Update a row
  rows delete        Delete rows

  pages list         List pages in a doc
  pages get          Get a page by ID or name
  pages update       Update a page's metadata
  pages export       Export a page to HTML or Markdown

  formulas list      List formulas in a doc
  formulas get       Get a formula by ID or name

  controls list      List controls in a doc
  controls get       Get a control by ID or name

Output Formats

By default all commands output JSON — ideal for piping to jq or agent use.

codaio docs list | jq '.[].name'

# Human-readable table
codaio docs list --format table

Examples

# List all docs you own
codaio docs list --is-owner

# Get all rows from a table
codaio rows list <docId> <tableId> --all

# Upsert a row (by column name key)
codaio rows upsert <docId> <tableId> \
  --cells '[{"column":"Name","value":"Alice"}]' \
  --key-columns Name

# Export a page to Markdown
codaio pages export <docId> <pageId> --output-format markdown

Environment Variables

| Variable | Description | | ---------------- | --------------------------------------- | | CODA_API_TOKEN | Coda API token (overrides stored token) |

Browser URLs vs API IDs

Coda browser URLs and API IDs are annoyingly close but not identical.

  • Browser doc URLs use _d..., while the API returns the doc ID without that leading d.
  • Example: https://coda.io/d/My-Doc_dAbCdEf123 maps to API doc ID AbCdEf123.
  • If you already have the full browser URL, you can pass the URL directly anywhere the CLI asks for a docId.

TODO: Future API coverage

  • [ ] Permissions (ACL/sharing)
  • [ ] Publishing
  • [ ] Packs
  • [ ] Analytics
  • [ ] Automations
  • [ ] Folders
  • [ ] Workspaces
  • [ ] Miscellaneous (resolveBrowserLink, mutationStatus, categories)

Development

bun install
bun run src/index.ts --help   # dev
bun test                       # run tests
bun run build                  # build to dist/cli.js
bun run generate:types         # regenerate OpenAPI types

Releasing

Create a changeset for any user-facing change:

bun run changeset

When you're ready to publish, run the Release workflow in GitHub Actions from the branch you want to release. The workflow will:

  • build the CLI
  • version the package with Changesets
  • update CHANGELOG.md
  • publish to npm
  • push the release commit and tag back to GitHub

The workflow requires a repository secret named NPM_TOKEN.