# balena-device-init

> Configure and initialize devices using device specs

Latest version **8.2.3** (published 2026-05-12) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install balena-device-init
pnpm add balena-device-init
yarn add balena-device-init
bun add balena-device-init
```

## Health

**Score 65/100 (B)** — status: active.

Positive: has types; no vulnerabilities; has provenance; high maintenance score; high quality score.

Warnings: low downloads; no esm support.

## Facts

| | |
|---|---|
| Version | 8.2.3 |
| Published | 2026-05-12 |
| First published | 2018-10-30 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=20.6.0 |
| Dependencies | 6 |
| Unpacked size | 50.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 4 |
| Author | Balena Ltd. |
| Maintainers | balena.io |
| Keywords | balena, device, spec, initialize, configure |

## Links

- npm: https://www.npmjs.com/package/balena-device-init
- Repository: https://github.com/balena-io-modules/balena-device-init
- Issues: https://github.com/balena-io-modules/balena-device-init/issues
- npm.io page: https://npm.io/package/balena-device-init

## Dependencies (6)

- [lodash](https://npm.io/package/lodash.md) ^4.17.21
- [reconfix](https://npm.io/package/reconfix.md) ^1.0.2
- [balena-semver](https://npm.io/package/balena-semver.md) ^3.0.10
- [balena-image-fs](https://npm.io/package/balena-image-fs.md) ^7.3.0
- [balena-config-json](https://npm.io/package/balena-config-json.md) ^4.2.0
- [resin-device-operations](https://npm.io/package/resin-device-operations.md) ^4.0.0

## Alternatives

- [jsforce](https://npm.io/package/jsforce.md) — 851.2K weekly downloads
- [react-native-qrcode-svg](https://npm.io/package/react-native-qrcode-svg.md) — 693.5K weekly downloads
- [@salesforce/plugin-data](https://npm.io/package/@salesforce/plugin-data.md) — 394.9K weekly downloads
- [@backstage/plugin-search-common](https://npm.io/package/@backstage/plugin-search-common.md) — 308.5K weekly downloads
- [@chain-registry/types](https://npm.io/package/@chain-registry/types.md) — 38.4K weekly downloads

## Recent versions

- 8.2.3 (latest) — 2026-05-12
- 8.2.4-build-renovate-actions-setup-node-6-x-0f4f53098fa33718202a36bccbec5c54b60d6b77-1 (build-renovate-actions-setup-node-6-x) — 2026-05-12
- 8.2.4-build-renovate-actions-setup-node-5-x-4cc2a12535aee05b7aa70ce9ac098a13069cc4bd-1 (build-renovate-actions-setup-node-5-x) — 2026-05-12
- 8.2.4-build-renovate-balena-semver-4-x-248ba8a41f55d329f3a90cf6f9bf29ba427b7fa7-1 (build-renovate-balena-semver-4-x) — 2026-05-12
- 8.2.3-build-renovate-github-actions-0f677a01b2b1f716ec8b3d58f4efaa0be8b94b45-1 (build-renovate-github-actions) — 2026-05-12
- 8.2.3-build-renovate-major-13-balena-sdk-753dd2f310851e6995551415b215529d0d1cb6a5-1 (build-renovate-major-13-balena-sdk) — 2026-02-19
- 8.2.3-build-renovate-major-8-chai-as-promised-93d113b76bc233db668e83a85a23cf389fd86dd4-1 (build-renovate-major-8-chai-as-promised) — 2026-02-19
- 8.2.3-build-renovate-major-5-chai-1dbb2fde010ffee28ccfee779a848086e201f695-1 (build-renovate-major-5-chai) — 2026-02-19
- 8.2.2-build-add-npm-oidc-permissions-f11075c31b2e63f96a6a2bf605f09a674c6e91f2-1 (build-add-npm-oidc-permissions) — 2026-02-18
- 8.2.1-build-update-reconfix-354055c26bee0cb142b9dfcc4bf1bce8651caa13-1 (build-update-reconfix) — 2026-01-12
- 8.2.0-build-getImageOsVersion-flasher-e9ca9e86636cb0e0ec3c4c568fbd847c02cddadd-1 (build-getImageOsVersion-flasher) — 2025-12-03
- 8.1.14-build-device-operations-980fbcccaff01286cd53b356c72ee3150b157826-1 (build-device-operations) — 2025-09-24
- 8.1.13-build-balena-semver-3-1ad2f1c81b10a06347ab990077f8a06244f48bed-1 (build-balena-semver-3) — 2025-09-22
- 8.1.12-build-drop-unused-rindle-96e262dc37090a59648e0e5b0cac3cc164a3b694-1 (build-drop-unused-rindle) — 2025-09-19
- 8.1.11-build-bump-etcher-sdk-33cf2e90d8a544a03988108ea3acc9008dd1f0a8-1 (build-bump-etcher-sdk) — 2025-06-06
- … 105 more at https://npm.io/package/balena-device-init/versions

## README

balena-device-init
-----------------

[![npm version](https://badge.fury.io/js/balena-device-init.svg)](http://badge.fury.io/js/balena-device-init)
[![dependencies](https://david-dm.org/balena-io/balena-device-init.png)](https://david-dm.org/balena-io/balena-device-init.png)

Configure and initialize devices using device specs.

Role
----

The intention of this module is to provide low level access to how balena configures and initialises devices using device specs.

**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.

Installation
------------

Install `balena-device-init` by running:

```sh
$ npm install --save balena-device-init
```

Documentation
-------------


* [init](#module_init)
    * [~configure(image, manifest, config, [options])](#module_init..configure) ⇒ <code>Promise.&lt;EventEmitter&gt;</code>
    * [~initialize(image, manifest, options)](#module_init..initialize) ⇒ <code>Promise.&lt;EventEmitter&gt;</code>

<a name="module_init..configure"></a>

### init~configure(image, manifest, config, [options]) ⇒ <code>Promise.&lt;EventEmitter&gt;</code>
This function injects `config.json` and network settings into the image.

**Kind**: inner method of [<code>init</code>](#module_init)  
**Summary**: Configure an image with an application  
**Returns**: <code>Promise.&lt;EventEmitter&gt;</code> - configuration event emitter  
**Access**: public  

| Param | Type | Description |
| --- | --- | --- |
| image | <code>String</code> | path to image |
| manifest | <code>Object</code> | device type manifest |
| config | <code>Object</code> | a fully populated config object |
| [options] | <code>Object</code> | configuration options |

**Example**  
```js
init.configure('my/rpi.img', manifest, config).then (configuration) ->

	configuration.on('stdout', process.stdout.write)
	configuration.on('stderr', process.stderr.write)

	configuration.on 'state', (state) ->
		console.log(state.operation.command)
		console.log(state.percentage)

	configuration.on 'error', (error) ->
		throw error

	configuration.on 'end', ->
		console.log('Configuration finished')
```
<a name="module_init..initialize"></a>

### init~initialize(image, manifest, options) ⇒ <code>Promise.&lt;EventEmitter&gt;</code>
**Kind**: inner method of [<code>init</code>](#module_init)  
**Summary**: Initialize an image  
**Returns**: <code>Promise.&lt;EventEmitter&gt;</code> - initialization event emitter  
**Access**: public  

| Param | Type | Description |
| --- | --- | --- |
| image | <code>String</code> | path to image |
| manifest | <code>Object</code> | device type manifest |
| options | <code>Object</code> | configuration options |

**Example**  
```js
init.initialize('my/rpi.img', manifest, network: 'ethernet').then (configuration) ->

	configuration.on('stdout', process.stdout.write)
	configuration.on('stderr', process.stderr.write)

	configuration.on 'state', (state) ->
		console.log(state.operation.command)
		console.log(state.percentage)

	configuration.on 'burn', (state) ->
		console.log(state)

	configuration.on 'error', (error) ->
		throw error

	configuration.on 'end', ->
		console.log('Configuration finished')
```

Support
-------

If you're having any problem, please [raise an issue](https://github.com/balena-io/balena-device-init/issues/new) on GitHub and the balena team will be happy to help.

Tests
-----

Create an `.env` file and put the following lines in it, replacing the asterisks
with the valid credentials for a test user on [balena-staging.com](https://balena-staging.com)

```
TEST_EMAIL=***
TEST_PASSWORD=***
```

Run the test suite by doing:

```sh
$ npm test
```

Contribute
----------

- Issue Tracker: [github.com/balena-io/balena-device-init/issues](https://github.com/balena-io/balena-device-init/issues)
- Source Code: [github.com/balena-io/balena-device-init](https://github.com/balena-io/balena-device-init)

Before submitting a PR, please make sure that you include tests, and that [coffeelint](http://www.coffeelint.org/) runs without any warning:

```sh
$ gulp lint
```

You can then run the tests with:

```sh
npm test
```

License
-------

The project is licensed under the Apache 2.0 license.

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