# orator

> Unopinionated API http server abstraction - REST or IPC

Latest version **6.1.3** (published 2026-07-14) · MIT license · 0 weekly downloads

## Install

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

## Health

**Score 45/100 (D)** — status: active.

Positive: no vulnerabilities.

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

## Facts

| | |
|---|---|
| Version | 6.1.3 |
| Published | 2026-07-14 |
| First published | 2015-03-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 405.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Steven Velozo |
| Maintainers | stevenvelozo, bigal |
| Keywords | rest, api, logging |

## Links

- npm: https://www.npmjs.com/package/orator
- Repository: https://github.com/fable-retold/orator
- Issues: https://github.com/fable-retold/orator/issues
- npm.io page: https://npm.io/package/orator

## Dependencies (4)

- [find-my-way](https://npm.io/package/find-my-way.md) ^9.5.0
- [orator-static-server](https://npm.io/package/orator-static-server.md) ^2.1.4
- [fable-serviceproviderbase](https://npm.io/package/fable-serviceproviderbase.md) ^3.0.19
- [orator-serviceserver-base](https://npm.io/package/orator-serviceserver-base.md) ^1.0.8

## Alternatives

- [cli-color](https://npm.io/package/cli-color.md) — 3.4M weekly downloads
- [log](https://npm.io/package/log.md) — 1.3M weekly downloads
- [logstash-client](https://npm.io/package/logstash-client.md) — 4.5K weekly downloads
- [@nocobase/plugin-logger](https://npm.io/package/@nocobase/plugin-logger.md) — 2.0K weekly downloads
- [child-process-debug](https://npm.io/package/child-process-debug.md) — 695 weekly downloads

## Recent versions

- 6.1.3 (latest) — 2026-07-14
- 6.1.2 — 2026-05-08
- 6.1.1 — 2026-04-29
- 6.1.0 — 2026-04-24
- 6.0.4 — 2026-03-05
- 6.0.3 — 2026-02-27
- 6.0.2 — 2026-02-19
- 6.0.1 — 2026-02-18
- 6.0.0 — 2026-02-16
- 5.0.2 — 2026-02-06
- 5.0.1 — 2025-01-17
- 5.0.0 — 2024-08-16
- 2.0.10 — 2024-07-16
- 2.0.8 — 2024-04-15
- 4.0.3 — 2024-03-02
- … 58 more at https://npm.io/package/orator/versions

## README

# Orator

> **[Read the Orator Documentation](https://fable-retold.github.io/orator/)** - interactive docs with the full API reference.

> An unopinionated API server abstraction for REST and IPC services

Orator is not an attempt to reinvent the wheel. Nor do we want to make a car with five of them. Orator is a thin abstraction layer over service server implementations (like Restify), providing a consistent interface for building API servers. You can spin up a web server in a single simple line, and configuration is managed through a consistent JSON format -- so as you begin to have 10 or 15 or 5,000 microservices, you don't have a bunch of boilerplate API server code laying around.

## Features

- **Unopinionated Design** - Wraps any service server implementation through a consistent interface
- **REST and IPC** - Full HTTP server support via Restify, or in-process IPC for testing and microservice composition
- **Lifecycle Management** - Before/After hooks for initialization and service start phases
- **Static File Serving** - Built-in static file serving with subdomain-based folder routing
- **Fable Integration** - First-class service provider in the Fable ecosystem with logging and configuration
- **Browser & Node.js** - Works in both environments with automatic service server selection

## Quick Start

```javascript
const libFable = require('fable');
const libOrator = require('orator');
const libOratorServiceServerRestify = require('orator-serviceserver-restify');

const _Fable = new libFable({
	Product: 'MyAPIServer',
	ProductVersion: '1.0.0',
	ServicePort: 8080
});

_Fable.serviceManager.addServiceType('Orator', libOrator);
_Fable.serviceManager.addServiceType('OratorServiceServer', libOratorServiceServerRestify);
_Fable.serviceManager.instantiateServiceProvider('Orator');
_Fable.serviceManager.instantiateServiceProvider('OratorServiceServer');

_Fable.Orator.serviceServer.get('/hello/:name',
	(pRequest, pResponse, fNext) =>
	{
		pResponse.send({ greeting: `Hello ${pRequest.params.name}!` });
		return fNext();
	});

_Fable.Orator.startService(
	() =>
	{
		console.log('Server is running on port 8080');
	});
```

## Installation

```bash
npm install orator
```

## Configuration

| Setting | Type | Default | Description |
|---------|------|---------|-------------|
| `Product` | string | `"Unnamed_Service"` | Application name identifier |
| `ProductVersion` | string | `"0.0.1"` | Application version string |
| `ServicePort` | number | `8080` | Port for the service server to listen on |
| `APIServerPort` | number | - | Legacy alias for ServicePort (automatically migrated) |
| `RestifyConfiguration` | object | `{}` | Configuration passed to Restify when using the Restify service server |

## Documentation

Full documentation is available in the [`docs`](./docs) folder, or served locally:

```bash
npx docsify-cli serve docs
```

- [Architecture](docs/architecture.md) - Service server abstraction design
- [Getting Started](docs/getting-started.md) - Step-by-step setup guide
- [Static File Serving](docs/static-files.md) - Serving files from disk
- [IPC Server](docs/ipc-server.md) - In-process service invocation

## Related Packages

- [orator-serviceserver-restify](https://github.com/fable-retold/orator-serviceserver-restify) - Restify service server implementation
- [orator-serviceserver-base](https://github.com/fable-retold/orator-serviceserver-base) - Abstract service server base class
- [orator-static-server](https://github.com/fable-retold/orator-static-server) - Static file serving
- [fable](https://github.com/fable-retold/fable) - Application services framework

## License

MIT

## Contributing

Pull requests are welcome. For details on our code of conduct, contribution process, and testing requirements, see the [Retold Contributing Guide](https://github.com/fable-retold/retold/blob/main/docs/contributing.md).

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