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

api-response-manager

v2.5.3

Published

Command-line interface for API Response Manager

Readme

ARM CLI - API Response Manager Command Line Interface

npm version npm downloads License: Proprietary

Command-line interface for API Response Manager. Manage tunnels, webhooks, and projects from your terminal.

Version: 2.5.3 | Live Service: https://tunnelapi.in

Installation

Option 1: Install from npm (Recommended)

npm install -g api-response-manager

After installation, verify:

arm --version
arm --help

Option 2: Install from Source

# Clone the repository
git clone https://github.com/vijaypurohit322/api-response-manager.git
cd api-response-manager/cli

# Install dependencies
npm install

# Link globally
npm link

# Verify installation
arm --version

Option 3: Use with npx (No Installation)

npx api-response-manager login
npx api-response-manager tunnel 3000
npx api-response-manager webhook

Quick Start

1. Login

Interactive Login (Recommended)

arm login
# Choose from: Email/Password, Google, GitHub, or Microsoft

Email & Password

arm login -e [email protected] -p yourpassword

Social Login (OAuth)

# Login with Google
arm login --provider google

# Login with GitHub
arm login --provider github

# Login with Microsoft
arm login --provider microsoft

The CLI will:

  1. Generate a unique device code
  2. Open your browser automatically
  3. Wait for you to authenticate
  4. Store your credentials securely

2. Start a Tunnel

# Expose local port 3000
arm tunnel 3000

# With custom subdomain
arm tunnel 3000 --subdomain myapi

# With authentication
arm tunnel 3000 --auth --rate-limit 100

3. Create a Webhook

# Basic webhook
arm webhook

# With forwarding to URL
arm webhook --forward http://localhost:4000/webhook

# With forwarding to tunnel
arm webhook --tunnel <tunnel-id>

Commands

Authentication

arm login

Authenticate with API Response Manager

Options:

  • -e, --email <email> - Email address (for email/password login)
  • -p, --password <password> - Password (for email/password login)
  • --provider <provider> - OAuth provider: google, github, or microsoft

Examples:

# Interactive login (choose method)
arm login

# Email & Password
arm login -e [email protected] -p mypassword

# Social Login (OAuth Device Flow)
arm login --provider github
arm login --provider google
arm login --provider microsoft

OAuth Device Flow: When using social login, the CLI will:

  1. Generate a unique device code (e.g., ABCD-EFGH)
  2. Display a verification URL
  3. Automatically open your browser
  4. Wait for you to complete authentication
  5. Store your token securely

Example output:

$ arm login --provider github

🌐 Logging in with github...

📋 Please complete authentication:

  1. Visit: https://localhost:5173/device
  2. Enter code: ABCD-EFGH

  Code expires in 600 seconds

? Open browser automatically? (Y/n) 

✓ Browser opened

⠋ Waiting for authentication...
✓ Authentication successful!

User: John Doe
Provider: github
Token saved to: ~/.config/arm-cli/config.json

✓ You can now use all ARM CLI commands

arm logout

Logout from API Response Manager

arm logout

Tunnels

arm tunnel <port>

Start a tunnel to expose local server

# Basic HTTP tunnel
arm tunnel 3000

# HTTPS tunnel with SSL
arm tunnel 3000 --protocol https --ssl

# TCP tunnel (for databases, etc.)
arm tunnel 5432 --protocol tcp --subdomain postgres

# WebSocket tunnel
arm tunnel 8080 --protocol ws

# With custom subdomain and authentication
arm tunnel 3000 --subdomain myapi --name "My API" --auth --rate-limit 100

# With custom domain
arm tunnel 3000 --protocol https --ssl --domain api.yourdomain.com

Options:

  • -s, --subdomain <subdomain> - Custom subdomain
  • -n, --name <name> - Tunnel name
  • -a, --auth - Enable basic authentication
  • -r, --rate-limit <limit> - Rate limit (requests per minute, default: 60)
  • -p, --protocol <protocol> - Protocol: http, https, tcp, ws, wss (default: http)
  • --ssl - Enable SSL/HTTPS
  • -d, --domain <domain> - Custom domain

arm tunnel:list

List all active tunnels

arm tunnel:list

arm tunnel:stop <tunnelId>

Stop a tunnel

arm tunnel:stop 507f1f77bcf86cd799439011

arm tunnel:logs <tunnelId>

View tunnel request logs

arm tunnel:logs 507f1f77bcf86cd799439011
arm tunnel:logs 507f1f77bcf86cd799439011 --follow
arm tunnel:logs 507f1f77bcf86cd799439011 --lines 100

Options:

  • -f, --follow - Follow log output (real-time)
  • -n, --lines <number> - Number of lines to show (default: 50)

arm tunnel:domain <tunnelId> <domain>

Set custom domain for tunnel

arm tunnel:domain 507f1f77bcf86cd799439011 api.yourdomain.com

arm tunnel:ssl <tunnelId>

Upload SSL certificate for tunnel

arm tunnel:ssl 507f1f77bcf86cd799439011 --cert cert.pem --key key.pem
arm tunnel:ssl 507f1f77bcf86cd799439011 --cert cert.pem --key key.pem --ca ca.pem

Options:

  • --cert <path> - Path to certificate file
  • --key <path> - Path to private key file
  • --ca <path> - Path to CA certificate file (optional)

arm tunnel:auth:oauth <tunnelId>

Configure OAuth authentication for tunnel

arm tunnel:auth:oauth 507f1f77bcf86cd799439011 \
  --provider google \
  --client-id YOUR_CLIENT_ID \
  --client-secret YOUR_SECRET \
  --callback-url https://yourtunnel.arm.dev/auth/callback \
  --scope openid,email,profile

Options:

  • --provider <provider> - OAuth provider: google, github, microsoft, custom
  • --client-id <id> - OAuth client ID
  • --client-secret <secret> - OAuth client secret
  • --callback-url <url> - OAuth callback URL
  • --scope <scope> - OAuth scope (comma-separated)

arm tunnel:auth:oidc <tunnelId>

Configure OpenID Connect authentication for tunnel

arm tunnel:auth:oidc 507f1f77bcf86cd799439011 \
  --issuer https://accounts.google.com \
  --client-id YOUR_CLIENT_ID \
  --client-secret YOUR_SECRET \
  --callback-url https://yourtunnel.arm.dev/auth/callback

Options:

  • --issuer <url> - OIDC issuer URL
  • --client-id <id> - OIDC client ID
  • --client-secret <secret> - OIDC client secret
  • --callback-url <url> - OIDC callback URL

arm tunnel:auth:saml <tunnelId>

Configure SAML authentication for tunnel

arm tunnel:auth:saml 507f1f77bcf86cd799439011 \
  --entry-point https://idp.example.com/saml/sso \
  --issuer https://yourtunnel.arm.dev \
  --cert idp-cert.pem \
  --callback-url https://yourtunnel.arm.dev/auth/saml/callback

Options:

  • --entry-point <url> - SAML entry point URL
  • --issuer <issuer> - SAML issuer
  • --cert <path> - Path to IdP certificate file
  • --callback-url <url> - SAML callback URL

arm tunnel:ingress <tunnelId> <rules>

Configure ingress rules for tunnel (path-based routing)

# Route different paths to different backends
arm tunnel:ingress 507f1f77bcf86cd799439011 \
  "/api=localhost:3000,/admin=localhost:4000" \
  --tls

# Single rule
arm tunnel:ingress 507f1f77bcf86cd799439011 "/api=localhost:3000"

Options:

  • --tls - Enable TLS for ingress

Rules format: /path=host:port,/path2=host:port

Webhooks

arm webhook

Create a new webhook

arm webhook
arm webhook --name "GitHub Webhook"
arm webhook --forward http://localhost:4000/webhook
arm webhook --tunnel 507f1f77bcf86cd799439011
arm webhook --expires 48

Options:

  • -n, --name <name> - Webhook name
  • -f, --forward <url> - Forward URL
  • -t, --tunnel <tunnelId> - Forward to tunnel
  • -e, --expires <hours> - Expiration time in hours (default: 24)

arm webhook:list

List all webhooks

arm webhook:list

arm webhook:delete <webhookId>

Delete a webhook

arm webhook:delete a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

arm webhook:logs <webhookId>

View webhook request logs

arm webhook:logs a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
arm webhook:logs a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 --follow
arm webhook:logs a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 --lines 100

Options:

  • -f, --follow - Follow log output (real-time)
  • -n, --lines <number> - Number of lines to show (default: 50)

arm webhook:replay <webhookId> <requestId>

Replay a webhook request

arm webhook:replay a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 507f1f77bcf86cd799439011

Projects

arm projects

List all projects

arm projects

arm project:create <name>

Create a new project

arm project:create "My API Project"
arm project:create "My API Project" --description "Testing API endpoints"

Options:

  • -d, --description <description> - Project description

arm project:share <projectId>

Get shareable link for a project

arm project:share 507f1f77bcf86cd799439011

arm project:responses <projectId>

View project API responses

arm project:responses 507f1f77bcf86cd799439011
arm project:responses 507f1f77bcf86cd799439011 --limit 20

Options:

  • -n, --limit <number> - Number of responses to show (default: 10)

Logs

arm logs <id>

View logs for tunnels or webhooks (auto-detects type)

arm logs 507f1f77bcf86cd799439011
arm logs a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 --follow

Options:

  • -f, --follow - Follow log output (real-time)
  • -n, --lines <number> - Number of lines to show (default: 50)

Configuration

arm config:set <key> <value>

Set configuration value

arm config:set apiUrl http://localhost:5000/api
arm config:set defaultTunnelPort 8080

arm config:get [key]

Get configuration value (omit key to show all)

arm config:get apiUrl
arm config:get

arm config:delete <key>

Delete configuration value

arm config:delete apiUrl

Configuration

Configuration is stored in ~/.config/arm-cli/config.json

Default configuration:

{
  "apiUrl": "http://localhost:5000/api",
  "token": null,
  "userId": null,
  "email": null,
  "defaultTunnelPort": 3000,
  "defaultWebhookExpiry": 86400
}

Examples

Expose Local Development Server

# Login
arm login

# Start tunnel on port 3000 with custom subdomain
arm tunnel 3000 --subdomain myapp

# Your local server is now accessible at:
# https://myapp.free-tunnelapi.app

# Output:
# 🚇 Starting Tunnel...
# ✔ Tunnel created successfully!
# ┌─────────────────────────────────────────────┐
# │  Tunnel Information                         │
# ├─────────────────────────────────────────────┤
# │  Name:        myapp                         │
# │  Public URL:  https://myapp.free-tunnelapi.app│
# │  Local Port:  3000                          │
# └─────────────────────────────────────────────┘
# 🎉 Tunnel Active!

Tunnel Timeouts (Industry Standard)

| Setting | Value | Description | |---------|-------|-------------| | Heartbeat | 30 seconds | CLI sends keepalive every 30s | | Idle Timeout | 2 hours | Closes after 2 hours of no requests | | Max Session | 24 hours | Requires reconnect after 24 hours |

Secure Tunnel with OAuth Authentication

# Create HTTPS tunnel
arm tunnel 3000 --protocol https --ssl --subdomain myapi

# Configure Google OAuth
arm tunnel:auth:oauth <tunnel-id> \
  --provider google \
  --client-id YOUR_GOOGLE_CLIENT_ID \
  --client-secret YOUR_GOOGLE_SECRET \
  --callback-url https://myapi.tunnel.arm.dev/auth/callback

# Now your tunnel requires Google login to access

TCP Tunnel for Database

# Expose PostgreSQL database
arm tunnel 5432 --protocol tcp --subdomain mydb

# Connect from anywhere:
# psql -h mydb.tunnel.arm.dev -p 5432 -U username -d database

Multi-Service Routing with Ingress

# Create tunnel
arm tunnel 3000 --protocol https --ssl

# Configure path-based routing
arm tunnel:ingress <tunnel-id> \
  "/api/v1=localhost:3000,/api/v2=localhost:4000,/admin=localhost:5000" \
  --tls

# Now:
# https://yourtunnel.arm.dev/api/v1 -> localhost:3000
# https://yourtunnel.arm.dev/api/v2 -> localhost:4000
# https://yourtunnel.arm.dev/admin -> localhost:5000

Test Webhooks Locally

# Create webhook that forwards to local server
arm webhook --forward http://localhost:4000/webhook --name "Test Webhook"

# Send test request
curl -X POST <webhook-url> -d '{"test": "data"}'

# View logs
arm webhook:logs <webhook-id>

CI/CD Integration

# In your CI/CD pipeline
export ARM_TOKEN="your-auth-token"

# Start tunnel for testing
arm tunnel 3000 --subdomain ci-test-${CI_BUILD_ID}

# Run your tests against the public URL
npm test

# Stop tunnel
arm tunnel:stop <tunnel-id>

Troubleshooting

Authentication Issues

# Check if logged in
arm config:get email

# Re-login
arm logout
arm login

Connection Issues

# Check API URL
arm config:get apiUrl

# Update API URL
arm config:set apiUrl https://your-api-url.com/api

View All Configuration

arm config:get

Troubleshooting

Command Not Found After Installation

If you get arm: command not found after installing:

Windows:

  1. Check npm prefix: npm config get prefix
  2. Add to PATH: C:\Users\<YourUsername>\AppData\Roaming\npm
  3. Restart terminal

macOS/Linux:

echo 'export PATH="$(npm config get prefix)/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Alternative - Use npx:

npx api-response-manager login

Publishing to npm

See PUBLISHING.md for detailed instructions on publishing this package to npm.

Quick Publish

# Login to npm
npm login

# Update version
npm version patch  # or minor/major

# Publish
npm publish --access public

Support

  • GitHub: https://github.com/vijaypurohit322/api-response-manager
  • Issues: https://github.com/vijaypurohit322/api-response-manager/issues
  • Email: [email protected]

License

This software is proprietary. See LICENSE for details.

Key Points:

  • ✅ Personal and educational use allowed
  • ✅ Self-hosting for non-commercial use allowed
  • ❌ Commercial use requires separate license
  • ❌ Resale or redistribution prohibited
  • 📧 Contact: [email protected]