# ribil

> Run the Ribil land-records API backend (village maps + RTC) on any machine, exposed via a Cloudflare tunnel.

Latest version **1.0.1** (published 2026-09-24) · UNLICENSED license · 0 weekly downloads

## Install

```sh
npm install ribil
pnpm add ribil
yarn add ribil
bun add ribil
```

Provides the command `ribil`.

## Health

**Score 55/100 (C)** — status: active.

Positive: no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; no types; no esm support.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2026-09-24 |
| First published | 2026-09-24 |
| Weekly downloads | 0 |
| License | UNLICENSED |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=18 |
| Dependencies | 5 |
| Unpacked size | 89.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Harsh Agarwal |
| Maintainers | stark954 |
| Keywords | ribil, karnataka, land-records, rtc, cloudflare-tunnel, cli |

## Links

- npm: https://www.npmjs.com/package/ribil
- Homepage: https://ribil.co
- npm.io page: https://npm.io/package/ribil

## Dependencies (5)

- [cors](https://npm.io/package/cors.md) ^2.8.5
- [convex](https://npm.io/package/convex.md) ^1.41.0
- [dotenv](https://npm.io/package/dotenv.md) ^16.4.5
- [express](https://npm.io/package/express.md) ^4.22.1
- [https-proxy-agent](https://npm.io/package/https-proxy-agent.md) ^7.0.2

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 1.0.1 (latest) — 2026-09-24
- 1.0.0 — 2026-09-24

## README

# ribil

Run the [Ribil](https://ribil.co) land-records API backend (village maps + RTC) on any machine and expose it at `https://api.ribil.co` through a Cloudflare tunnel.

The Karnataka land-records site only accepts requests from Indian IPs, so the scraping API runs on a machine in India while the frontend is hosted elsewhere.

## Install

```sh
npm i -g ribil
```

Requires Node 18+. `cloudflared` is used from your PATH if installed, otherwise it is downloaded to `~/.ribil/bin` on first run.

## Setup (once per machine)

```sh
ribil config set token <cloudflare-tunnel-token>
ribil config set convex-url https://<deployment>.convex.cloud
ribil doctor
```

Settings are stored in `~/.ribil/config.json` (mode 600). Environment variables with the same names (`RIBIL_TUNNEL_TOKEN`, `CONVEX_URL`, ...) override the file.

For token mode, the tunnel's public hostname (`api.ribil.co` → `http://localhost:3001`) must be configured in the Cloudflare dashboard. Creds-file mode (`creds-file` or `creds-b64`) generates the ingress rules locally.

## Usage

```sh
ribil serve              # API + tunnel + latest-wins lease
ribil serve --quick      # temporary *.trycloudflare.com URL, no account needed
ribil serve --no-tunnel  # localhost only
ribil status             # check local and public API
ribil stop               # stop a backend started on this machine
ribil logs tunnel        # recent tunnel log
ribil help
```

When `convex-url` is set, only one machine serves at a time: starting `ribil serve` on a new machine takes over, and the previous machine shuts down automatically.

Browser-based endpoints (`/api/download-pdf`, `/api/prefetch`, `forcePuppeteer`) need Puppeteer, which is not bundled to keep the install small. The endpoints the app uses (`/api/extract`, `/api/get-pdf-url`, `/api/rtc`, `/api/rtc/options`, `/api/pdf`) are HTTP-only.

---
_Source: https://npm.io/package/ribil · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
