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

@eidren/fde-cli

v0.2.1

Published

Project tools for agents and people

Readme

Eidren FDE CLI

Node.js 22+. The installed CLI does not require Bun, this repository, or an agent SDK. Sign in through the account center in your browser, or use an API Key.

Install

The npm package is @eidren/fde-cli; its command is fde-cli.

npm install -g @eidren/fde-cli
fde-cli --help

Configure

fde-cli profile add spark --url https://10.42.0.1:31080 -k
fde-cli auth login
fde-cli project use <project-id>

auth login opens the account center and waits for your browser to return to the CLI. Use --no-browser to open the printed URL yourself on the same computer. The login wait is five minutes; --timeout <ms> changes it.

fde-cli auth login --api-key  # enter a Key without echoing it
fde-cli auth status
fde-cli auth logout

Automation can set EIDREN_API_KEY or pipe a Key into fde-cli auth login --stdin. The environment Key takes priority over saved login. Don't put keys in command arguments. Browser tokens refresh automatically and remain separate for each profile. Logging out revokes the browser token and clears local credentials; API Key logout only removes the saved Key. EIDREN_API_KEY remains active until you unset it. Browser login requires the server's CLI client configuration. For SSH/headless use, choose API Key login; --no-browser is not a device-code login. TLS verification is on by default. Use NODE_EXTRA_CA_CERTS for a private CA, or explicitly skip certificate checks for a self-signed, expired or mismatched certificate:

fde-cli profile add spark --url https://10.42.0.1:31080 -k
fde-cli material list --insecure  # also accepts -k
EIDREN_INSECURE=1 fde-cli +status

profile add ... -k saves the setting for that profile; later calls can omit -k. TLS precedence is command flag, EIDREN_INSECURE, then profile. EIDREN_INSECURE accepts 1/true and 0/false. --insecure=false restores verification for one invocation. EIDREN_URL overrides do not inherit the profile's TLS setting. The option covers API calls, uploads, downloads and account login/refresh requests; it does not change system or browser certificate settings. Use it only for a server you trust, since its identity will not be verified.

Project precedence:

  1. --project / --project-id (conflicting explicit body value is rejected).
  2. An explicit projectId in --data or --params.
  3. EIDREN_PROJECT_ID.
  4. Nearest .eidren.json for the selected profile.
  5. Profile default set by fde-cli profile project <id>.

--no-project disables defaults. It doesn't bypass a required project. Defaults only apply to APIs that declare projectId. Other APIs use the resource's scope. All new workflow runs, quality suites and evaluations require a project.

Profiles have separate URLs, credentials and default projects. Select one with --profile or EIDREN_PROFILE. EIDREN_URL overrides the URL and requires an environment Key; it never forwards saved profile credentials to a different URL. EIDREN_CONFIG_DIR relocates configuration; by default it is ~/.config/eidren. The command rename preserves existing EIDREN_* variables and .eidren.json bindings.

Discover and call

fde-cli --help
fde-cli loop --help
fde-cli schema loop.material.list
fde-cli loop material list --limit 20
fde-cli loop material list --project <other-id> --page-all --page-limit 10
fde-cli ticket case result submit --data @result.json --dry-run
fde-cli loop source content --id <source-id> --output ./original.pptx
fde-cli dev repository download --product-id <product-id> --revision-id <revision-id> --output ./code.zip

Unique service-less aliases work (material list). Ambiguous aliases list the explicit commands. Nested objects/arrays accept JSON flags or --data @file; --data - reads stdin. --params supplies path/query/header parameters. Typed flags override raw fields. A business field colliding with a global flag uses a prefix, e.g. --body-data or --query-format. See schema for exact flags. --project-id is the shared exception.

--page-all only applies to declared cursor reads. Results include complete and nextCursor; reaching the page limit does not imply that all records were fetched. JSON is default. --fields id,name, --format ndjson, and --format table reduce output. --output writes a new file and refuses to overwrite an existing file. Downloads return file metadata; streams can be saved with the same flag. --timeout 0 removes the HTTP time limit. Ctrl-C or a client timeout does not cancel a server-side run.

Read operations can use POST. Permission labels come from service policies, not verbs. Manage/delete/archive commands require --yes; there is no extra approval on ordinary writes or explicit execution. No background model calls. No automatic write retries. Server-required idempotency keys are generated if omitted; dry-run and failed write output expose the chosen key so an uncertain operation can be investigated/retried.

For Ticket milestones and project-homepage management, read fde-cli skills read cases or the Case guide. It covers independent milestone and homepage flags, project/personal filters, pagination, manual ordering and revision conflicts. Check fde-cli schema ticket.case.update and ticket.case.overview.move for the installed catalog's fields. If missing, import matching server OpenAPI definitions; rebuilding or upgrading the CLI is needed to replace its bundled guide.

Raw escape hatch (no automatic project injection):

fde-cli api POST /api/loop/api/project/list --data '{}'

Work with an external agent

fde-cli +ingest --file ./meeting.md
fde-cli +context --case <case-id> --output ./context --originals
# Work with your own agent and tools.
fde-cli +publish --product <id> --file ./report.md --base <revision-id> --context ./context
fde-cli ticket case result submit --data @result.json

For the first revision use --base null. Publication replaces the primary artifact of an existing document, presentation, diagram or media product; use revision commit for multi-file or code manifests. A concurrent update returns a conflict. Publication writes a local journal and supports +publish --resume <journal> after interruption. Resume uses the same artifact/revision IDs and request; it does not switch to the newest base. It records external context metadata without claiming a platform generation or acceptance.

+context returns the case/product input, pinned product/material versions and currently applicable decision summaries. Export reads full decision statements and text artifacts; --originals adds original binaries. Decisions include pagination completeness. Captured product basis is retained separately from current decisions. Files are named by ID; context.json contains the source-to-file mapping. Export goes into a new directory.

+status aggregates one bounded page of materials, products, cases and runs. +changes, +trace and +impact query recorded product input relationships; they do not infer a whole-project source-code dependency graph. +impact --source <id> or +impact --decision-version <id> finds current product revisions with that recorded dependency, with bounded pagination and an explicit completeness marker. +wait --run <id> follows an existing run.

Read the bundled skill with fde-cli skills read. To save the complete skill:

mkdir -p ./eidren/references
fde-cli skills read > ./eidren/SKILL.md
for name in materials products cases; do
  fde-cli skills read "$name" > "./eidren/references/$name.md"
done

Copy that folder into your agent's skill directory. The CLI never edits agent configuration itself.

Regenerate

At the repository root:

bun run cli:generate
bun run cli:build
bun run cli:check

Bun exports server routes and builds the single-file CLI. The OpenAPI-to-CLI generator and the installed CLI run on Node 22:

node apps/cli/scripts/generate.mjs --input ./openapi --output ./catalog.json

The exporter registers all nine services offline without invoking business functions. Request schemas come from Zod. JSON response schemas come from actual handler argument types at build time. Multipart/binary metadata is curated in api-docs; pagination is inferred only when request and response fields agree. No response-validation gate is added to production. any/unknown business fields remain open schemas rather than invented structures. Regenerate after changing route contracts.

Use fde-cli catalog import ./openapi for new server definitions without rebuilding. The release includes a generated catalog; normal commands do not download schemas. See ../../docs/agent-cli.md for the generation contract.