The configuration file
Instead of typing addresses into the app, you can give it a small file. It says where your host is, who the host is, where the status service is and which model to use. It is plain text (JSON), short enough to write by hand, and precise enough that an AI assistant can write it from a description of your setup.
Example
{
"format": "euboulia-config",
"version": 1,
"host": { "url": "https://home.example.org", "address": "0x25c345b3461d4662e432ab9e3489ee559d01e3e2" },
"status": { "url": "https://relay.example.org" },
"model": "qwen2.5:14b"
}
Fields
| Field | Required | Meaning |
|---|---|---|
format | yes | Always the text "euboulia-config". |
version | yes | The number 1. |
host.url | with host | The https address the app uses to reach your host: a name that points to it or to your relay (https://home.example.org), or an IP address with a port (https://192.168.1.20:8443). No user name, password or #fragment. |
host.address | with host | The host's own address: 0x and 40 hexadecimal digits. It is printed by the installer (in the pairing link, after address=) and by euboulia-host pairing-link. It is not your address and not an IP address. |
status.url | no | The https address of the relay's status service, which tells the app whether your host is online: https://relay.example.org. |
model | no | The model name the host offers, for example qwen2.5:14b. The app offers it first when you choose a model. |
note | no | Text for you; the app ignores it. (JSON has no comments, so use this.) |
At least one of host, status and model must be present. Any other field is an error, not ignored, so a misspelled name is found at once.
What the app does with it
- Reading a file changes nothing and connects to nothing. In Settings, choose Import a configuration file (or Paste a configuration); the pairing screen can take the text as well.
- If the file names a host, the app goes to the pairing screen with the text in place. Only when you press Connect does it check that the host it reaches proves exactly the address in the file, over a connection tied to the certificate the host signed for. A file cannot make the app trust a different host than the one whose address it names, and an address that does not match is refused.
- The status service and the model from the file are applied only after the host has proved its address. A file that sets only those is shown to you first and applied when you press Apply.
- The app tells you every problem in a file at once, in words.
What does not belong in it
No secret. Your identity key, passwords, API keys and tokens are never written to this file and never read from it. A field whose name looks like a secret (key, token, password, secret, seed and similar) is refused with a message. Treat a file you did not write yourself like a pairing link from a stranger: it can point the app at someone else's host, which would then see what you type. Check the host address against the one shown on your own host before you press Connect.
Asking an AI assistant to write it
Give the assistant the facts and this prompt. Do not give it any key or password; it does not need them.
Write a configuration file for the Euboulia app as JSON, and nothing else. Rules: - "format" is "euboulia-config" and "version" is 1. - "host" has "url" (an https address, no credentials, no #fragment) and "address" (0x followed by exactly 40 hexadecimal digits: the host's own address, not mine). - "status" has "url" (https) and is optional; "model" is a model name and is optional. - "note" may hold text for me. No other fields. No secrets of any kind. - If a fact is missing, leave that part out and tell me which fact you need. My setup: [describe it: the host's name or IP and port, the host's 0x address, the relay's name if there is one, the model name]
Then paste the answer into Settings, Paste a configuration. If the app lists problems, paste them back to the assistant.
Two examples
A host on your own network, no relay:
{ "format": "euboulia-config", "version": 1,
"host": { "url": "https://192.168.1.20:8443", "address": "0x25c345b3461d4662e432ab9e3489ee559d01e3e2" },
"model": "qwen2.5:14b" }
Only change the model on a host you already use:
{ "format": "euboulia-config", "version": 1, "model": "llama3.1:8b" }