---
title: "PKI Express Configuration"
description: "Configuration of PKI Express with the pkie config command: view and set options such as logging, temp directory, proxy, LAPP and Azure."
canonical: "https://docs.lacunasoftware.com/en-us/articles/pki-express/config"
locale: "en"
product: "PKI Express"
last_updated: "2026-10-12"
---

# PKI Express Configuration

You can manage the following settings:

* [Logging](https://docs.lacunasoftware.com/en-us/articles/pki-express/config/log)
* [Temporary directory](https://docs.lacunasoftware.com/en-us/articles/pki-express/config/temp-dir)
* [Proxy](https://docs.lacunasoftware.com/en-us/articles/pki-express/config/proxy)
* [LAPP Integration](https://docs.lacunasoftware.com/en-us/articles/pki-express/config/lapp)
* [Azure Integration](https://docs.lacunasoftware.com/en-us/articles/pki-express/config/azure)
* [Trust Services](https://docs.lacunasoftware.com/en-us/articles/pki-express/config/trust-services)

The configuration of PKI Express is managed with the command `pkie config`. To learn more about this command, read on.
The client libraries have settings of their own, such as the folder where PKI Express is installed: see
[Client library settings](https://docs.lacunasoftware.com/en-us/articles/pki-express/config#client-library).

## Command *pkie config*

To view the command syntax:

```sh
pkie help config
```

To view the current configuration:

```sh
pkie config
```

To set a configuration:

```sh
pkie config --set name=value
```

For instance:

```sh
pkie config --set logLevel=3
```

## Effective configuration

PKI Express may ignore a configuration value because it is invalid. For instance, if you set
the `tempDir` configuration to an invalid path or to a directory which is not writeable,
PKI Express will use the temporary directory from the `TEMP` environment variable instead.
This is called the *effective* value of a configuration, that is, the configuration that
PKI Express is actually using, which might differ from the configuration that was set
manually.

When trying to diagnose configuration problems, it may be useful to view the effective
configuration of PKI Express:

```sh
pkie config --effective
```

## Client library settings

The settings above belong to PKI Express and apply to every application on the machine. The client libraries have
settings of their own, in the class `PkiExpressConfig`, which you pass to the constructor of each operation class
(`PadesSignatureStarter`, `SignatureFinisher`, `PadesSigner` and so on). Without it, the class uses the defaults below.

| Setting | Default |
|---|---|
| PKI Express folder | Windows: the folder `Lacuna Software\PKI Express` that contains `pkie.exe`, under `Program Files`, `Program Files (x86)` or the user's `%LOCALAPPDATA%`. Linux: the `pkie` command on the `PATH`, where the [setup pages](https://docs.lacunasoftware.com/en-us/articles/pki-express/setup) place it |
| Temporary folder | The system temporary folder (Ruby: a new folder that the library creates in it). It holds the temporary files that the library writes for each operation |
| Transfer data folder | The temporary folder. It holds the transfer data files, which carry a signature from the start step to the finish step, so it must be the same in both steps |

All three are constructor arguments, in this order, and each one can be left empty (`null`, `None` or `nil`):

| Language | Example |
|---|---|
| Java | `new PadesSignatureStarter(new PkiExpressConfig("D:\\pkie", null, "D:\\pkie-transfer"))` (`String` or `Path` arguments) |
| Node.js | `new PadesSignatureStarter(new PkiExpressConfig('D:\\pkie', null, 'D:\\pkie-transfer'))` |
| PHP | `new PadesSignatureStarter(new PkiExpressConfig('D:\\pkie', null, 'D:\\pkie-transfer'))` |
| Python | `PadesSignatureStarter(PkiExpressConfig('D:\\pkie', None, 'D:\\pkie-transfer'))` |
| Ruby | `PkiExpress::PadesSignatureStarter.new(PkiExpress::PkiExpressConfig.new('D:\\pkie', nil, 'D:\\pkie-transfer'))` |

If PKI Express is not in the folder you set or, on Windows, in any of the default folders, the library throws
`InstallationNotFoundException` (Java, PHP) or `InstallationNotFoundError` (Node.js, Python, Ruby). If the temporary
or transfer data folder you pass does not exist, the Java, Node.js, PHP and Python libraries fall back to the default
without an error, while Ruby raises `ArgumentError`.

> **Warning: Custom folder on Linux**
>
> When you set the PKI Express folder on Linux, the Node.js, PHP, Python and Ruby libraries run `dotnet <folder>/pkie.dll`.
> Since version 1.31.0, the Linux package of PKI Express is a single `pkie` executable, with no `pkie.dll`
> ([changelog](https://docs.lacunasoftware.com/en-us/articles/pki-express/changelog#v1-31-0)), so with these libraries leave the folder empty and put `pkie` on the `PATH`.
> The Java library runs `<folder>/pkie` when the folder has no `pkie.dll`.

To delete the temporary files of an operation, call `dispose()` (Java) or `disposeSync()` (Node.js) after the operation
completes, as the [Java signature sample](https://docs.lacunasoftware.com/en-us/articles/pki-express/java/how-it-works) does; the PHP, Python and Ruby libraries delete them
when the object is destroyed or garbage-collected. Transfer data files are not temporary files: the finish step needs them.
