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

@chegger/node-obscura-aws-lambda

v0.1.3

Published

AWS Lambda-specific Node.js runtime wrapper for the Obscura browser binary.

Readme

@chegger/node-obscura-aws-lambda

AWS Lambda-specific Node.js wrapper around the Obscura browser binary.

This package exists so Lambda consumers can install a Lambda-compatible obscura build directly, without carrying the default desktop/server targets from @chegger/node-obscura.

Built Obscura version

The Lambda artifact in this repo is built from upstream Obscura v0.1.5 (dist/build-metadata.json records the exact tag and checksum).

Install

npm install @chegger/node-obscura-aws-lambda

Supported target:

  • Linux x64, intended for AWS Lambda nodejs24.x

Usage

const { chromium } = require('playwright-core');
const { startObscura } = require('@chegger/node-obscura-aws-lambda');

async function main() {
  const obscura = await startObscura({ stealth: true });
  const browser = await chromium.connectOverCDP(obscura.endpoint);

  try {
    const context = browser.contexts()[0] || (await browser.newContext());
    const page = await context.newPage();
    await page.goto('https://example.com');
    console.log(await page.title());
  } finally {
    await browser.close();
    await obscura.close();
  }
}

main().catch((error) => {
  console.error(error);
  process.exit(1);
});

If you use CDK NodejsFunction, force Docker bundling so the postinstall step runs in a Linux x64 Lambda-like environment and includes the downloaded binary in the deployment artifact:

const myLambdaFunction = new lambda.NodejsFunction(this, 'MyLambdaFunction', {
  // ...
  runtime: l.Runtime.NODEJS_24_X,
  architecture: l.Architecture.X86_64,
  bundling: {
    forceDockerBundling: true,
    nodeModules: ['@chegger/node-obscura-aws-lambda'],
  },
});

API

The runtime API intentionally mirrors @chegger/node-obscura.

getBinaryPath()

Returns the installed Lambda-specific Obscura binary path.

startObscura(options?)

Starts obscura serve and resolves when the CDP endpoint is ready.

Options:

  • port?: number
  • host?: string
  • stealth?: boolean
  • startupTimeoutMs?: number
  • extraArgs?: string[]

Returns:

{
  endpoint: string;
  wsEndpoint: string;
  close: () => Promise<void>;
}

Build the Lambda Artifact

This repo is Docker-first. You do not need Rust installed locally for the main build flow.

npm run build:artifact

That script will:

  1. clone the upstream obscura source
  2. build it inside an Amazon Linux 2023 Docker image
  3. package obscura and obscura-worker into: dist/obscura-x86_64-linux-lambda.tar.gz
  4. write a checksum and build metadata

Smoke-test the built artifact

npm run smoke:test

This runs the built binary inside the AWS Lambda Node 24 base image and waits for /json/version to come up.

Environment variables

Runtime install:

  • OBSCURA_AWS_LAMBDA_RELEASE_TAG overrides the package release tag to download. Default: v${package.version}
  • OBSCURA_AWS_LAMBDA_DOWNLOAD_BASE_URL overrides the binary download base URL
  • NODE_OBSCURA_AWS_LAMBDA_SKIP_DOWNLOAD=1 skips binary download during install

Build scripts:

  • OBSCURA_UPSTREAM_REPO overrides the upstream Obscura git repo
  • OBSCURA_UPSTREAM_TAG overrides the upstream Obscura git tag
  • OBSCURA_CARGO_FEATURES overrides Cargo features. Default: stealth
  • OBSCURA_LAMBDA_DOCKER_TAG overrides the local Docker builder image tag
  • OBSCURA_LAMBDA_ARCHIVE overrides the archive path used by the smoke test
  • OBSCURA_LAMBDA_SMOKE_IMAGE overrides the Lambda base image used by the smoke test

License

MIT for this wrapper package. Obscura itself remains Apache-2.0 under its upstream project.