HalAxe Help
1. What HalAxe Does
Most real APIs require authentication before they will return any data. Many tools and AI assistants have no built-in way to handle this. Without HalAxe, you would have to sign in separately, retrieve an access token, and pass it into your tool on every request, often by hand.
HalAxe sits between your tool and the API. You set up an Environment once, telling HalAxe which API to reach and how to log in. HalAxe then gives you a local Proxy URL that behaves like an open, unauthenticated address. Any tool or AI assistant that can make HTTP requests can point at that address, and HalAxe takes care of authentication behind the scenes.
HalAxe also includes a built-in MCP (Model Context Protocol) server. When connected, an AI assistant can call your APIs, explore their schemas, run saved queries, and send email through HalAxe, without ever seeing your credentials.
Important: HalAxe reads data from APIs. It supports GET and QUERY requests only. It cannot send data to an API using POST, PUT, PATCH, or DELETE.
1.1 Supported Authentication Methods
HalAxe supports two types of API authentication:
- OAuth 2.0: HalAxe handles the login flow and manages access tokens on your behalf. See the Flow Types section for the specific OAuth flows supported.
- HTTP Header pass-through: HalAxe adds a fixed set of HTTP headers (such as an API key or a bearer token) to every request. No login flow is needed.
1.2 Pricing
Free
The Free version includes everything you need for day-to-day use:
- Local proxies for as many environments as you like, with automatic token handling.
- All login methods: Authorization Code, PKCE, Client Credentials, ROPC, and HTTP Header.
- Placeholders and extra header/body fields for shaping requests.
- The environment token for locking down a proxy.
- Internal HTTPS for local connections.
- Email sending (SMTP) per environment.
- The AI assistant (MCP server) for querying your APIs from AI tools.
- Exporting your environments to an encrypted backup file.
The Free version is valid for one year. When it expires, reinstall HalAxe to continue using it free.
Premium
Premium unlocks the two features not included in Free:
- Import โ restore environments from an encrypted backup file.
- Deployment Targets โ ready-made connection profiles such as IFS ERP.
Start with Premium features free for one year, then keep them for life with a one-time purchase. No subscriptions.
2. System Requirements
HalAxe is a small program that runs quietly in the background on your computer. To use it, you need:
- A system tray (notification area). HalAxe lives there while it is running, usually near the clock. If your system hides this area, you may need to show it to find the HalAxe icon.
- A web browser. HalAxe's screen opens in your default browser. Any modern browser works.
- Network access to your APIs and login providers. HalAxe itself does not need an internet connection just to run. It does need to be able to reach whatever Base URL, Auth URL, and Token URL you set up for an environment, whether those addresses are on the internet or only on your local network.
- Free local ports. Each environment you set up uses its own local port
number, between 1024 and 32767, on
localhost. Make sure the ports you choose are not already used by something else on your computer. -
A folder HalAxe can write to. HalAxe stores its settings in one
folder on your computer, choosing the first of the following that it can
write to:
-
Your app-configuration folder:
%AppData%\halaxe- the internal folder HalAxe writes its data to~/Library/Application Support/halaxe- open via Finder's "Go" > "Go to Folder..."~/.config/halaxe- hidden by default, since folder names starting with a dot are hidden - If that location is not available, a
.halaxefolder directly in your "home folder" - the main folder set up for your user account (e.g.C:\Users\<YourName>on Windows/Users/<YourName>on macOS/home/<yourname>on Linux). - If neither of the above is available, a
halaxefolder next to the HalAxe program itself - i.e. wherever HalAxe is installed or unzipped.
Inside this folder, HalAxe keeps:
- an environment json file, containing your environment settings, stored encrypted
settings.json, app preferences such as which ports use HTTPS and whether to stop proxies when you close the tab, plus your HTTPS certificate (stored encrypted)- a
certfolder, holding the certificate files used for HTTPS (see section 11, "Secure Connections (HTTPS)")
Do not edit or rename any files in this folder. Tampering will break the application. The Export and Import buttons (section 12, "Backing Up and Restoring Environments") are the supported way to back up or move your environments.
-
Your app-configuration folder:
On Windows, having the Microsoft Edge WebView2 Runtime installed lets
HalAxe show its own sign-in window for Authorization Code and PKCE logins.
Most Windows computers already have it. If it is missing, HalAxe still works
fully, sign-in simply opens in your normal browser instead (see "Authorize
using browser" in section 6, "Filling in the Login Details"). On Windows,
this runtime also keeps a small <HalAxe>.exe.WebView2 folder next to the
program. This is created and managed by Windows itself, is unrelated to
HalAxe's own settings folder above, and can be safely ignored.
3. Starting HalAxe
A short splash screen may appear for a few seconds when HalAxe starts. This is normal and closes by itself.
Once it has started, HalAxe opens its screen in your default browser automatically, and also shows an icon in your system tray.
- Click Open to open the HalAxe screen in your browser again, for example if you closed the tab earlier.
- Click Exit to stop HalAxe completely. This stops every proxy that is currently running.
- Enable Internal HTTPS is a tick box in this menu. Turn it on if you need any of your proxies to use a secure (https) address instead of a plain (http) one. See section 11, "Secure Connections (HTTPS)", for more on this.
4. Quick Start
- Open HalAxe from the tray icon.
- Click + New in the Environments section.
- Fill in a Name, the Base URL of the real API, and a local Port number for HalAxe to use.
- Choose a Flow (this is the login method, explained below) and fill in the details it asks for.
- Click Save. Your new environment appears in the list with its own Proxy URL.
- In the table, click the proxy address shown next to your environment
(it looks like
http://localhost:8080/load?halaxe-env=MyEnv) to copy it to your clipboard. -
In Postman, curl, or any other tool, send a GET request to that address.
Add one extra header to the request called halaxe-get, and set its value
to the full address of the real API endpoint you want to call. HalAxe
will log in for you, fetch that address, and send back the response.
You can click the halaxe-get tag near the top of the page to copy that header name, so you do not have to type it yourself.
5. Adding or Editing an Environment
Click + New in the Environments section to add one, or click an existing row in the table to edit it.
| Field | What it means |
|---|---|
| Name | A label so you can recognise this environment later. Each name can only be used once. Maximum 32 characters; cannot contain \ / : * ? " < > | or control characters. |
| Base URL | The address of the real API you want to reach, for example https://api.example.com. |
| Port | The local port number HalAxe will listen on for this environment. Must be between 1024 and 32767. |
| Flow | The login method HalAxe should use. See the list below. |
Flow Types (Login Methods)
- Authorization Code: The standard browser-based login. HalAxe opens a login page, you sign in, and HalAxe receives the result and exchanges it for an access token.
- PKCE: Works the same way as Authorization Code, but does not need a client secret. This is the recommended choice for most setups, especially if your provider does not give you a secret.
- Client Credentials: No human login at all. HalAxe sends a Client ID and Client Secret straight to the provider and gets back an access token. Good for service-to-service connections.
- Resource Owner Password (ROPC): HalAxe sends a username and password directly to the provider to get a token. Only use this with a system you trust completely, since the password is stored by HalAxe.
- HTTP Header: No login process at all. HalAxe simply adds one or more fixed headers (such as a static API key) to every request it forwards.
Email Configuration (Optional)
Each environment can optionally store an SMTP configuration. Once set, an
AI assistant connected via HalAxe's MCP server can send emails through that
environment's mail account (see section 16, "AI Assistant (MCP Server)", for
details on the send_email tool).
Creating the config file
The email configuration is a plain JSON file you create yourself and keep in
a safe place. HalAxe does not generate it. Create a file named anything you
like (for example email-config.json) with the following content:
{
"smtp_host": "smtp.example.com",
"smtp_port": 587,
"username": "you@example.com",
"password": "your-smtp-password",
"from": "you@example.com",
"tls": "starttls"
}
| Field | What it means |
|---|---|
smtp_host | Hostname of your SMTP server, for example smtp.gmail.com or mail.company.com. |
smtp_port | Port number your SMTP server listens on. Common values: 587 (STARTTLS), 465 (SSL/TLS), 25 (plain, avoid if possible). |
username | The account name used to log in to your SMTP server, usually your email address. |
password | The SMTP password or app password for that account. |
from | The address that appears in the From field of every email sent through this config. |
tls | Connection security. Must be exactly one of "starttls" (upgrade to TLS after connecting, used with port 587), "ssl" (TLS from the start, used with port 465), or "none" (no encryption, only for internal or test servers). |
All six fields are required. HalAxe will reject the file at import time if
any field is missing or tls is not one of the three allowed values.
Security note: this file contains your SMTP password in plain text. Keep it on your own computer securely or delete it. Once imported, HalAxe stores the config encrypted inside the environment, so the original file is no longer needed.
Importing the config
- Open or edit the environment in HalAxe.
- Click Import Email near the bottom of the dialog.
- Choose the JSON file you created. If valid, a success message appears and
the button gains an asterisk (
*) to show there is an unsaved change. - Click Save. The config is validated, encrypted, and stored with the environment.
Removing the config
Click Remove Email in the environment dialog, then click Save. The
button gains an asterisk (*) while the removal is pending, and the config
is deleted once you save.
6. Filling in the Login Details
The fields shown change depending on the Flow you picked.
Authorization Code, PKCE, Client Credentials, and ROPC
- Client ID and Client Secret: the credentials your login provider gave you for this application. If you leave Client Secret blank while editing an existing environment, the saved value is kept as is.
- Well-Known URL: many providers publish a single configuration address
ending in
.well-known/openid-configuration. Paste it here and click Fetch. HalAxe will read it and fill in the Auth URL and Token URL for you, so you do not have to look them up yourself. -
Auth URL and Token URL: the addresses your provider uses for login
and for issuing tokens. You can type these in by hand if you do not have a
Well-Known URL.
Some providers require extra parameters that are not covered by the fields above. You can add any such parameters directly to the Auth URL or Token URL as a normal query string:
https://myidp.example.com/oauth/token?audience=https://api.example.com https://myidp.example.com/authorize?prompt=select_account&login_hint=user@company.comHalAxe passes those parameters through to your provider alongside its own. If a parameter value contains a space, use
+in its place, as is standard in web addresses:https://myidp.example.com/authorize?prompt=select+accountAny parameter name that HalAxe already sets itself (such as
client_id,state,scope, orcode_challenge) is reserved. HalAxe will warn you at save time if you try to use one of those.If your provider requires a
nonceparameter, addnonce=anythingto the Auth URL. HalAxe will replace the value with a fresh random token on every login request, so you never have to manage it yourself.https://myidp.example.com/authorize?nonce=anythingYou can also add
halaxe-headerandhalaxe-bodyparameters to the Token URL to inject extra headers or body fields into every token request HalAxe sends to your login provider. See section 8, "Using halaxe-header and halaxe-body", for details and format.If your provider requires Client Secret Basic Auth in the token request, see "Client Secret Basic Auth in the Token URL" in section 8.
- Scopes: the access permissions you are requesting, separated by
spaces, for example
openid profile. - Redirect URI: the address the login page sends you back to once you have signed in. This must match what is registered with your provider.
- Authorize using browser: when ticked, the login page opens in your normal web browser instead of inside HalAxe. Turn this on if your provider refuses to show the login page inside an app, or if this computer does not have the component HalAxe needs to show its own login window. If that component is missing, this box is ticked automatically and cannot be unticked. The missing component is called "Microsoft Edge WebView2 Runtime". Most Windows computers already have it, but if needed you can download it for free from Microsoft's website by searching for "Microsoft Edge WebView2 Runtime download". Either way, ticking this box lets you keep using HalAxe without installing anything.
Resource Owner Password (ROPC) only
- Username and Password: the login details HalAxe will send to the provider on your behalf. As with Client Secret, leaving Password blank while editing keeps the value already saved.
HTTP Header only
- Headers: one or more
Name: Valuepairs, separated by semicolons, for exampleAuthorization: Bearer mytoken; X-API-Key: secret. HalAxe adds these headers to every request it forwards, exactly as typed.
Extra Options (all flows)
- Require environment token on each /load request: when turned on, anyone calling your proxy must also include a HalAxe-issued token. This stops other programs on your computer from quietly using your proxy. See section 10, "The Environment Token", for details.
- Token lifetime hours: how long that HalAxe token stays valid. Leave it
at
0to keep it valid until you stop the proxy. - Check URLs are reachable: when turned on, HalAxe tries to contact the Base URL, Auth URL, and Token URL before saving, and warns you if any of them cannot be reached.
7. Using Your Proxy
Once an environment is saved, it starts running and shows as Running in the table, with its proxy address shown next to it, for example:
http://localhost:<port>/load?halaxe-env=<name>
Send a GET request to that address, with an extra header called halaxe-get set to the full address of the real API endpoint you want to call. HalAxe fetches that address, adds the correct login details (an access token, custom headers, or whatever the Flow needs), and gives you back the response exactly as the real API sent it. Logging in again and refreshing tokens happens automatically, behind the scenes.
If your API supports the HTTP QUERY method (a newer protocol that works
like GET but allows a request body, used by some OData and REST services),
use halaxe-query in place of halaxe-get. HalAxe sends the request
using the QUERY method exactly as the protocol defines. You can combine
halaxe-query with halaxe-body to include a request body. You cannot
include both halaxe-get and halaxe-query in the same request.
If your environment uses Authorization Code or PKCE, the very first request (and any later request after your login expires) will pause while HalAxe shows you a login window, either its own pop-up window or your normal web browser, depending on the Authorize using browser setting. Sign in there as you normally would. HalAxe then finishes the request and keeps the access token it received, securely encrypted, for a while, so most later requests will not need a new sign-in.
Most headers you include on your proxy request are forwarded to the upstream
API unchanged. Connection-level headers such as Host, Connection, and
Transfer-Encoding are stripped automatically, and any halaxe-* headers
are consumed by HalAxe and not forwarded. Response headers from the upstream
are forwarded back to your client in the same way. All non-connection-level
headers (such as Content-Type, ETag, Cache-Control, and any custom
X-* headers) pass through unchanged.
In OAuth2 flows (Authorization Code, PKCE, Client Credentials, and ROPC),
HalAxe automatically adds an Authorization: Bearer <token> header to every
upstream request. If your request already includes an Authorization header,
HalAxe passes yours through and skips the automatic injection. For example,
if one particular endpoint needs a service account token instead of the user
token, send:
Authorization: Bearer <service-account-token>
and HalAxe will use that for this call only. Header values in halaxe-header
also support {placeholder} substitution to pull values from the token
response or your environment config. See section 9 for details.
In the HTTP Header flow there are no OAuth tokens. Instead, the headers
you saved in the environment's Headers field are sent automatically with
every upstream request. If you set the same header name directly on your
request, yours takes priority. For example, if the environment has
Authorization: Bearer api-key saved and you send a different Authorization
header on a specific call, the upstream receives yours.
If your tool cannot set custom HTTP headers or include a request body, see section 8, "Using halaxe-header and halaxe-body", for how to pass that information through the URL instead.
8. Using halaxe-header and halaxe-body
Some tools have no way to set custom HTTP headers or include a request body.
halaxe-header and halaxe-body are designed for exactly this situation.
They let you pass headers and body content through the URL or an HTTP header
instead.
If your tool already supports setting custom HTTP headers and request bodies natively, you do not need these parameters. Set them directly and HalAxe forwards them to the upstream API.
halaxe-header
Injects extra headers into the upstream request. Accepted as a URL query parameter or a request body field.
Format: Name: Value; Name2: Value2 (semicolon-separated)
| How to send it | Example |
|---|---|
| URL query parameter | ?halaxe-header=X-Tenant-Id: abc123 |
| Request body field | halaxe-header=X-Tenant-Id: abc123 |
If you send halaxe-header both ways, the request body field takes priority.
If you also set the same header name directly on your request, the direct
header always wins, regardless of what halaxe-header says for that name.
In the Token URL: Adding halaxe-header=Name: Value to the Token URL in
your environment settings injects that header into every token request HalAxe
sends to your login provider. Useful when your provider requires a custom
header alongside the standard token exchange.
To inject extra headers only during token refresh, use
halaxe-refresh-url-header=Name: Value in the Token URL instead. This works
the same way as halaxe-header but applies only to refresh requests, not the
initial token fetch.
Client Secret Basic Auth in the Token URL
Some providers require your Client ID and Client Secret to be sent as a
Client Secret Basic Auth Authorization header in the token request, rather
than in the request body. HalAxe provides two built-in placeholders for this.
{halaxe-client_secret_basic} expands to a Base64-encoded Basic value
built from your Client ID and Client Secret. Use it with halaxe-header in the
Token URL to add the Authorization header while still sending client_id and
client_secret in the request body as usual:
https://myidp.example.com/token?halaxe-header=Authorization: {halaxe-client_secret_basic}
{halaxe-client_secret_basic_only} works the same way but also removes
client_id and client_secret from the request body. Use this for providers
that want credentials in the header only:
https://myidp.example.com/token?halaxe-header=Authorization: {halaxe-client_secret_basic_only}
halaxe-body
Adds key-value pairs to the upstream request body. Accepted as a URL query parameter or an HTTP header. The HTTP header option is useful for tools that can set headers but not a request body.
Format: Name: Value; Name2: Value2 (semicolon-separated)
| How to send it | Example |
|---|---|
| URL query parameter | ?halaxe-body=field1: value1; field2: value2 |
| HTTP header | halaxe-body: field1: value1; field2: value2 |
If you use more than one of these, the direct request body takes priority,
then the HTTP header, then the URL param. Any halaxe-* keys found directly
in the request body are removed and not sent to the upstream API.
In the Token URL: Adding halaxe-body=Name: Value to the Token URL in
your environment settings adds extra parameters to the token request body.
Useful when your provider requires non-standard body fields during the token
exchange.
To add extra body fields only during token refresh, use
halaxe-refresh-url-body=Name: Value in the Token URL instead. This works
the same way as halaxe-body but applies only to refresh requests, not the
initial token fetch.
9. Using Placeholders in URLs and Parameters
You can embed {key} placeholders anywhere in a halaxe-header,
halaxe-body, Token URL, or upstream API address value. HalAxe replaces
each placeholder at request time with a matching value from one of the
sources described below.
Where placeholders work
- Direct proxy request: in
halaxe-headerandhalaxe-bodyvalues, and in the upstream API address sent viahalaxe-getorhalaxe-query. All four substitution sources are available here. - Token URL: in
halaxe-headerandhalaxe-bodyvalues added to the Token URL in your environment settings. Because the token response does not exist yet at this point, only sources 3 and 4 are available: callback parameters (Auth Code and PKCE flows only) and environment config. - Refresh URL: in
halaxe-refresh-url,halaxe-refresh-url-header, andhalaxe-refresh-url-bodyvalues. The previous token response is available here, so all four sources apply.
Substitution sources
All applicable sources for the context are checked for each key at the same time:
- Token response body: fields returned by your login provider in the
token response body, for example
{access_token}or{id_token}. - Token response headers: HTTP headers returned by the token endpoint,
for example
{X-Custom-Tenant}. - OAuth2 callback parameters: query parameters sent back in the login
redirect URL, such as
{session_state}or any custom parameter your provider includes alongside the authorization code. - Environment config: values derived from the settings you filled in
for this environment. These keys are always available regardless of which
flow you use, and they are prefixed with
halaxe-so they never clash with real token response fields:
| Placeholder | Value |
|---|---|
{halaxe-client_id} | Your Client ID |
{halaxe-client_secret} | Your Client Secret (plain text) |
{halaxe-client_secret_basic} | Basic base64(client_id:client_secret), ready to use as an Authorization header value |
{halaxe-client_secret_basic_only} | Same value, and also removes client_id and client_secret from the token request body |
{halaxe-username} | Username (ROPC flow only) |
{halaxe-password} | Password (ROPC flow only) |
{halaxe-headers-Name} | The value of the static header named Name from the HTTP Header flow settings. For example, if you set Authorization: Bearer mykey in the Headers field, {halaxe-headers-Authorization} expands to Bearer mykey. |
Rules
- Each key must appear in exactly one source. If a key is found in more than
one source, HalAxe returns
SUBST_PARAM_AMBIGUOUS. If it is not found in any source, HalAxe returnsSUBST_PARAM_NOT_FOUND. - To write a literal
{or}in a value, double it:{{produces{, and}}produces}.
Examples
Using a token response field in the upstream URL:
halaxe-get: https://api.example.com/data?tenant={tenant_id}
If your token response body includes a tenant_id field, HalAxe fills it in
before calling the API.
Using the Client ID in a token request header:
https://myidp.example.com/token?halaxe-header=X-Client-Id: {halaxe-client_id}
10. The Environment Token
If you turned on Require environment token on each /load request, every
call to /load must include an environment token that HalAxe itself
generates (this is separate from, and in addition to, the login token used
for the real API).
- Click the Token button next to an environment to open the Environment Token window.
- Click Copy to copy the environment token to your clipboard.
-
Add it to the end of your proxy address as
&halaxe-token=<environment-token>, for example:http://localhost:<port>/load?halaxe-env=<name>&halaxe-token=<environment-token> - If the environment token has expired, opening this window again gives you a fresh one.
- The Token lifetime hours setting (section 6, "Filling in the Login
Details") controls how long each environment token stays valid. A value of
0means it stays valid until the proxy is stopped.
11. Secure Connections (HTTPS)
By default, HalAxe's proxies use plain http:// on your local computer.
Some tools insist on a secure https:// address (for example, if they
refuse to use an http:// redirect address).
To turn this on:
- Open the tray icon menu and tick Enable Internal HTTPS. This creates a security certificate for your computer the first time it is needed.
- On the HalAxe screen, find the HTTPS Ports section. Each port you are
using appears here with its own switch. Turn the switch on for any port
you want to serve over
https://. -
If your browser or tool warns you that the certificate is not trusted,
use Open Cert Folder to find
cert.pemand add it to your system's list of trusted certificates. The folder containscert.pem(the certificate); it regenerates automatically if you delete or move it.Open Command Prompt, change to that folder, and run:
certutil -user -addstore -f "ROOT" cert.pemThis adds it to your own (current user) trusted certificates, so no administrator rights are needed.
Open Terminal, change to that folder, and run:
security add-trusted-cert -r trustRoot -k ~/Library/Keychains/login.keychain-db cert.pemThis adds it to your own login keychain, so no administrator password is needed.
Trusting a certificate for one user only varies between distributions and tools. The simplest reliable option is usually a system-wide install, for example on Ubuntu/Debian (this does need admin access):
sudo cp cert.pem /usr/local/share/ca-certificates/halaxe.crt sudo update-ca-certificatesAfter this, restart your browser or tool so it picks up the change.
Switching a port between http and https restarts that proxy briefly. Any requests in progress may need to be sent again.
12. Backing Up and Restoring Environments (Export / Import)
You can save your environments to a file and load them again later, or move them to another computer.
Export
- Click Export near the top of the environment list.
- Tick the environments you want to include.
- Enter a 6-digit PIN (and confirm it). This PIN locks the file so only someone who knows it can open it.
- Click Export to download the file. It is named
halaxe-export-<date>.json.
Keep the PIN safe. If you lose it, the file cannot be opened or recovered.
Import Premium
- Click Import.
- Choose the exported file and enter the PIN that was used to create it.
- Click Import.
If an environment in the file has the same name as one you already have, HalAxe will ask whether to:
- Skip existing: keep your current environment and ignore the one from the file, or
- Overwrite: replace your current environment with the one from the file.
Either way, the environments you choose to bring in appear in the table straight away.
13. Other Settings
- Toggle theme (the icon at the top right of the screen): switches the screen between light and dark appearance. Your choice is remembered the next time you open HalAxe.
- Stop all servers when active tab is closed: when this is ticked, closing the HalAxe browser tab stops every running proxy after a short delay. If you reopen the tab quickly, the proxies keep running. When this is unticked, closing the tab does not stop anything, your proxies keep running in the background until you exit HalAxe from the tray.
14. Screens You Might See
These full-screen messages can appear in the browser tab from time to time. They are normal and tell you what HalAxe is doing.
- Reconnecting...: shown briefly while a proxy switches between http and https. The page reconnects on its own once it is ready.
- HalAxe is Shutting Down...: shown after you click Exit in the tray menu, while HalAxe closes everything down.
- HalAxe is offline: HalAxe has fully stopped. You can close this tab.
- This tab is no longer active: you opened HalAxe in a new tab, so this older tab has been retired. Switch to the newer tab and close this one.
- Access Restricted: this page was opened directly, without going through the tray icon. Note that refreshing (reloading) the HalAxe page itself also shows this screen, since each link from the tray can only be used once. If this happens, just click Open in the tray icon menu again to get back into HalAxe.
15. "localhost" and "127.0.0.1" Addresses
Every HalAxe proxy address uses your own computer's address, which can be
written in two different ways: localhost or 127.0.0.1. These mean
exactly the same thing to your computer, but most login providers treat them
as two different addresses when checking a Redirect URI for
Authorization Code or PKCE logins.
Each time HalAxe starts, it tries to use localhost first, and uses that for
every proxy address. If localhost does not work on this computer, which is
rare and usually points to a network setup issue, HalAxe falls back to using
127.0.0.1 instead for that run.
If one of your saved environments has a Redirect URI written with the address HalAxe is not using this time, sign-in for that environment will fail until it is corrected. HalAxe helps with this automatically:
- When HalAxe starts: if any saved environments are affected, a message appears at the top of the screen listing them, along with the address they currently use and the address HalAxe is using now. Click Fix All to update every listed environment's Redirect URI to the correct address in one go. This message stays on screen until you click Fix All.
-
When importing environments: if a file you are importing contains
environments with this same issue, HalAxe pauses the import and asks
whether to:
- Update addresses: change the affected environments' Redirect URIs to match the address this run of HalAxe is using, and continue importing them as normal, or
- Skip these: leave those environments out of the import. Any other environments in the file are still imported normally.
After fixing the address either way, remember to also check that the Redirect URI registered with your login provider matches what HalAxe is now using, if your provider requires it to be registered in advance.
16. AI Assistant (MCP Server)
HalAxe includes a built-in MCP (Model Context Protocol) server that allows desktop AI tools to call your APIs directly through HalAxe's authenticated proxy. The AI can explore API schemas, make authenticated calls, save and rerun queries, and send email, all without ever seeing your credentials.
Starting the MCP server
- Click the ๐ค button in the top-right area of the HalAxe screen.
- Set a Port number (default
9877). This is the local port the MCP server listens on; it is separate from your environment proxy ports. - Optionally tick:
- Auto-start when HalAxe opens: the MCP server starts automatically every time HalAxe launches.
- Use HTTPS: serves the MCP server over
https://. Requires HTTPS to be enabled first (see section 11, "Secure Connections (HTTPS)").
- Click Start. The status changes to Running and a configuration snippet appears.
Connecting your AI tool
Once the server is running, a configuration snippet appears in the dialog:
"mcpServers": {
"HalAxe": {
"command": "halaxe.exe",
"args": [
"mcp-proxy",
"9877"
]
}
}
Click Copy to copy it to your clipboard, then paste it into your AI tool's MCP server configuration file. If necessary, restart your AI tool after adding the config so it picks up the new server.
The command is the short app name (halaxe.exe)
rather than a full install path. Windows resolves this name to the current version of
HalAxe through its app execution alias, so the configuration keeps working
after HalAxe updates. If your AI tool reports that it cannot start HalAxe, the dialog shows a
full fallback path you can paste as the command instead, and a warning if the
alias has been turned off, in which case re-enable it under
Settings > Apps > Advanced app settings > App execution aliases.
What the AI can do
Once connected, the AI assistant has access to the following tools:
| Tool | What it does |
|---|---|
get_help | Reads HalAxe's documentation. You can also ask the AI HalAxe-related questions using this context. |
get_env_placeholders | Returns the base URL and available {halaxe-*} placeholder tokens for an environment. The AI uses these to build requests without seeing actual credentials (see section 9, "Using Placeholders in URLs and Parameters"). |
call | Makes an authenticated API call through the HalAxe proxy. Auth tokens are managed by HalAxe; the AI never sees them. |
get_api_schema | Fetches the OpenAPI/Swagger schema for an environment so the AI can discover available endpoints. |
get_endpoint_detail | Returns the full schema for one specific endpoint: methods, parameters, request body, and response shape. |
set_schema_url | Lets you set a custom OpenAPI/Swagger schema URL for an environment, if auto-discovery does not find it. |
save_query | Saves an API call under a label for later reuse. Tokens are never stored. |
list_queries | Lists saved queries, optionally filtered by environment. |
run_query | Runs a saved query by its label. If the environment uses token protection, you must provide the environment token at run time (see section 10, "The Environment Token"). |
delete_query | Deletes a saved query by its label. |
send_email | Sends an email using the SMTP configuration stored in the named environment (see "Email Configuration" in section 5). For advanced MIME such as inline images or custom headers, pass a fully-constructed RFC 5322 message via raw_mime. |
Saved queries
Queries saved via save_query are stored on disk inside HalAxe's settings
folder (see section 2, "System Requirements"). Environment tokens are never
saved. If a query needs one, you must provide it at run time (see section 10,
"The Environment Token"). Saved queries are shared across all AI tools
connected to the same HalAxe instance.
17. Troubleshooting
Environment settings
| Problem | What is likely happening and what to do |
|---|---|
| "Name is required." | The Name field is empty. Fill it in and save again. |
| "Name contains invalid characters." | The Name contains characters not allowed: \ / : * ? " < > | and control characters. Remove them and save again. |
| "Port must be between 1024 and 32767." | The Port field is empty, not a number, or outside the allowed range. Enter a valid number between 1024 and 32767. |
| "Base URL is required." | The Base URL field is empty. Enter the root address of the API and save again. |
| "Headers are required for the HTTP Header flow." | The Headers field is empty. Enter at least one header and save again. |
| "Client ID is required." | The Client ID field is empty. Enter the client ID from your OAuth provider. |
| "Token URL is required." | The Token URL field is empty for the chosen flow. Enter the token endpoint from your OAuth provider. |
| "Auth URL is required." | The Auth URL field is empty for the chosen flow. Enter the authorization endpoint from your OAuth provider. |
| "Redirect URI is required." | The Redirect URI field is empty. Enter the URI registered with your OAuth provider (see section 6). |
| "Username is required." | The Username field is empty for the ROPC flow. Enter the username. |
| "Password is required." | The Password field is empty. Enter the password. When editing an existing environment, leaving it blank keeps the saved value. |
| "Must be a valid http or https URL." | One of the URL fields (Base URL, Auth URL, or Token URL) does not start with http:// or https://, or is not a valid address. Correct it and try saving again. |
| "The URL parameter '...' is managed by HalAxe and cannot be overridden." | You added a query parameter to the Auth URL or Token URL that HalAxe sets automatically. The message names the specific parameter. Remove it from the URL. |
| "The parameter '...' is a HalAxe proxy parameter and cannot be used in the Auth URL." | A halaxe-* parameter was added to the Auth URL. These parameters only work in the Token URL. Move it there, or remove it. |
| Redirect URI mismatch | The Redirect URI saved in your environment must exactly match the one registered with your login provider, and must point at the same address (such as localhost or 127.0.0.1) that HalAxe is actually using. If only the localhost/127.0.0.1 part is wrong, see section 15, "localhost" and "127.0.0.1" Addresses, for how HalAxe can fix this automatically. |
| "An environment with that name already exists." | Each environment name must be unique. Choose a different name and save again. |
| "Identical settings already exist in another environment." | The combination of URL, port, flow, and credentials exactly matches an existing environment. Change at least one setting and save again. |
| "One or more URLs could not be reached. Check your network and URLs." | Check URLs are reachable is turned on and HalAxe could not connect to at least one of the Base, Auth, or Token URLs before saving. Check the addresses and your network, or turn that option off if the server is not always reachable from this computer. |
| "Could not reach the well-known URL. Check the address and try again." | The Well-Known URL could not be reached or timed out when you clicked Fetch. Check the address (it should end in .well-known/openid-configuration) and your internet connection. |
| "The response wasn't a valid well-known configuration." | The Well-Known URL was reached but did not return a valid OpenID configuration document. Check that the address points to the correct endpoint. |
| Login window will not open / "No webview detected" | This computer is missing the component HalAxe uses to show its own login window. Tick Authorize using browser so the sign-in page opens in your normal browser instead. |
| "The login window could not be shown. Turn on 'Authorize using browser' and try again." | HalAxe's built-in login window could not start. Turn on Authorize using browser for the environment and try again. |
| "Enter a Base URL first." (Target / IFS ERP) | The IFS auto-fill button was clicked before entering a Base URL. Fill in the Base URL first, then click the button again. |
Ports and HTTPS
| Problem | What is likely happening and what to do |
|---|---|
| "That port is already in use by another application." | Another program, or another HalAxe environment, is already using that port. Pick a different port for this environment. |
| "No certificate found. Enable Internal HTTPS from the system tray first." | A certificate does not exist yet. Right-click the HalAxe tray icon, turn on Enable Internal HTTPS, and then turn on the HTTPS switch for this port in HTTPS Ports. |
| "Could not use existing certificate data. A new certificate was created." | HalAxe could not reuse its saved certificate, so it created a new one. If your browser or tool now says the certificate is not trusted, repeat the steps in section 11, "Secure Connections (HTTPS)", to trust the new one. |
| "Server Restart failed while switching to HTTP. The application was restarted automatically." | Shown as a notice at the top of the page the first time the screen loads after an automatic recovery restart. This happens when turning off HTTPS on the last port using it: HalAxe restarts its internal server to switch back to plain HTTP, and if that restart fails it launches itself again to recover. Dismiss the notice and carry on normally. If it keeps happening, restart HalAxe manually from the system tray. |
Export and Import
| Problem | What is likely happening and what to do |
|---|---|
| "Export PIN must be exactly 6 digits." | The PIN in the Export dialog is not exactly six digits. Enter a six-digit PIN and try again. |
| "Select at least one environment to export." | No environments are ticked in the Export dialog. Tick at least one and try again. |
| "PINs do not match." | The two PIN fields in the Export dialog contain different values. Re-enter them so they match. |
| "Please select a file." | The Import button was clicked without choosing a file. Select a HalAxe export .json file first and try again. |
| "Import PIN must be exactly 6 digits." | The PIN in the Import dialog is not exactly six digits. Enter a six-digit PIN and try again. |
| "Wrong PIN or corrupted file." | The PIN does not match the one used when the file was exported, or the file has changed since it was exported. Check the PIN and try again, or use a fresh copy of the export file. |
| "Invalid export file format." | The file you chose is not a HalAxe export file, or comes from a very different version of HalAxe. Choose the correct .json export file. |
| "Importing environments is not available for your current version. Please contact support." | The Import feature is not enabled in this copy of HalAxe. Contact support or upgrade to a premium version that includes Import. |
| "Import is not available for your current version" | A hint shown near the Import button when the feature is disabled. Same cause as the message above. |
Using your proxy
Proxy errors appear in two places: as a halaxe-error JSON response to the caller (see section 18 for the response format), and in the environment log panel inside HalAxe. API_BAD_RESPONSE is the exception: it appears only in the environment log, because HalAxe passes the real API error response through to you unchanged.
| Problem | What is likely happening and what to do |
|---|---|
MISSING_GET_URL | The request did not include a halaxe-get or halaxe-query parameter, so HalAxe does not know which upstream URL to call. Add one set to the full upstream address (see section 7). |
HALAXE_URL_CONFLICT | The request included both halaxe-get and halaxe-query. Only one can be used at a time. Remove one of them. |
MISSING_ENV | The request did not include a halaxe-env parameter, so HalAxe does not know which environment to use. Use the full proxy address shown in HalAxe, including ?halaxe-env=<name>. |
NO_HOST_CONFIG | The environment name in the request does not match any running environment on this port. Check the spelling against the name in HalAxe and make sure the environment shows as Running. |
URL_NOT_ALLOWED | The address in halaxe-get does not start with this environment's Base URL. HalAxe only proxies to the configured base address. Correct the upstream URL. |
SUBST_PARAM_NOT_FOUND | A placeholder in the request URL (for example {myValue}) has no matching value in the environment's substitution sources. Check that the placeholder name is correct. |
SUBST_PARAM_AMBIGUOUS | A placeholder in the request URL matches values in more than one substitution source. Make the placeholder name unique across your sources. |
ENV_TOKEN_EXPIRED | The environment token has expired. Click Token to get a fresh one and use it in the request (see section 10). |
ENV_TOKEN_INVALID | The environment token is missing or does not match. Add &halaxe-token=<token> to your proxy URL. |
AUTH_IN_PROGRESS | A sign-in for another environment on the same port is already in progress. Wait for it to finish, then retry. |
AUTH_FLOW_FAILED | Something went wrong during sign-in: the window was closed or cancelled before finishing, the sign-in timed out, or the credentials do not match what the provider expects. Retry without cancelling and check the login details in section 6. |
AUTH_DECLINED | A previous sign-in attempt failed and HalAxe has paused authentication for this environment. Click Stop, then Start, to reset it, then retry. |
API_REQUEST_FAILED | HalAxe signed in successfully but could not reach the upstream URL. Check that the address in halaxe-get is correct and that the upstream API is online and reachable from this computer. |
API_REQUEST_TIMEOUT | The upstream API did not respond within the time limit (10 minutes) and the request was cancelled. The environment log shows a "still processing" note every few minutes while a long call is running. Check that the upstream API is not stuck. |
API_BAD_RESPONSE (env log only) | The upstream API returned an error status (400 or 500-range). HalAxe passes the real API response through to you unchanged, so you will see the actual API error, not a halaxe-error wrapper. Check the upstream URL and request parameters, and consult the API's documentation for the specific error. |
MCP server
| Problem | What is likely happening and what to do |
|---|---|
| "MCP server failed to start." | Another application is already using the chosen MCP port. Open the ๐ค dialog, choose a different port, and start the MCP server again. |
| "HalAxe MCP server is not running on port {port}. Start the MCP server." | The AI connector can reach HalAxe but the MCP server is not running. Open the ๐ค dialog in HalAxe and click Start. |
| "HalAxe was restarted. Please restart the MCP connector." | HalAxe was restarted while the AI connector was active. Restart the MCP connection in your AI tool (see section 16). |
| "Environment '{name}' was not found. Check the environment name in HalAxe." | The environment name passed to the MCP tool does not match any environment in HalAxe. Check the spelling in HalAxe and use the exact name in the tool call. |
| "Environment '{name}' is not running. Start it in HalAxe before calling." | The environment exists but its proxy is not started. Click Start in HalAxe for that environment, then retry. |
| "Could not discover the API schema for '{name}'. The schema URL may not be accessible through the proxy." | The get_api_schema, get_endpoint_detail, or set_schema_url tool could not fetch the OpenAPI schema. Check that the environment is running, the schema URL is correct, and the API server is reachable through the proxy. |
| "Saved query '{name}' was not found." | The run_query or delete_query tool was given a query name that does not exist. Use list_queries to see what is available. |
Email configuration
These messages appear when your AI assistant calls the send_email tool (see "Email Configuration" in section 5 and section 16).
| Message | What is likely happening and what to do |
|---|---|
| "This environment has no email configuration. Import one from the environment settings." | No email config has been imported for this environment. Open the environment in HalAxe and use Import Email to add one. |
| "Email configuration is invalid. Required fields: smtp_host, smtp_port, username, password, from, tls (starttls, ssl, or none)." | The stored email config is missing a required field or has an invalid value. Re-import a corrected config file. |
| "Could not connect to the SMTP server. Check the host and port." | HalAxe could not reach the SMTP server. Check that smtp_host and smtp_port are correct and that the server is reachable from this computer. |
| "SMTP authentication failed. Check the username and password." | The SMTP server rejected the login credentials. Check username and password in the config and re-import. |
| "Failed to send the email. The SMTP server rejected the message." | The server accepted the connection and login but rejected the message. Check that the From address is allowed to send through this server. |
| "At least one recipient (to, cc, or bcc) is required." | The send_email tool was called without any recipient addresses. Include at least one address in to, cc, or bcc. |
| "Attachment '{filename}' contains invalid base64 data." | An attachment in the send_email call has malformed base64 content. Check the encoding of that attachment before retrying. |
License
| Message | What it means |
|---|---|
| "Expires on {end_date} ยท {remaining} day(s) remaining" | Shown as a notice at the top of the screen. Your HalAxe license is approaching expiry. No immediate action is needed. |
| "This version of HalAxe has expired." | The license for this copy of HalAxe has expired. Contact support or upgrade to continue using HalAxe. |
| "Deployment targets are a premium feature. Upgrade to the premium version." | Deployment Targets are a Premium feature. Activate your free premium year or buy Premium to enable them. |
| "Buy Premium is not available right now." | So you can try the full Premium experience for free first, Buy Premium becomes available only in the last 100 days of your free premium year. |
Browser
| Problem | What is likely happening and what to do |
|---|---|
| "Your browser does not support server-sent events." | The browser you are using cannot receive live updates from HalAxe. Switch to a modern browser such as Chrome, Edge, or Firefox. |
18. Errors From Your Proxy Requests
When something goes wrong with a request to your proxy address before HalAxe can reach the upstream API, HalAxe sends back a short JSON response instead of the data you asked for:
{ "halaxe-error": { "code": "...", "message": "..." } }
For what each code means and what to check, see section 17, "Troubleshooting", under "Using your proxy".
If the response does not look like {"halaxe-error":{...}} at all and instead
looks like a normal error page or a different JSON shape, HalAxe successfully
reached the upstream API and is passing its response back to you unchanged.
The problem is with the request itself or with the upstream API, not with
HalAxe. Check the environment log panel in HalAxe for the API_BAD_RESPONSE
entry, which shows the status code and a snippet of the API's reply.
19. Internal Error Codes (For IT / Support)
The messages below are referenced from section 17, "Troubleshooting". Most appear as a small banner near the button you clicked, but a few show in different places depending on the situation. The notes in each row say where to look. None of them are caused by anything you typed into an environment's settings, and there is no setting on the HalAxe screen that fixes them. They point to a problem with HalAxe's own internal state, or with this computer's storage, permissions, or network setup. Restarting HalAxe is the first thing to try for all of them.
| Message shown | Internal code (for IT) | What is likely causing it |
|---|---|---|
| "An unexpected error occurred. Please restart the application." | INTERNAL_ERROR | A general, unclassified failure. Something HalAxe expected to succeed did not, for example creating the export file, generating a fresh environment token, or reading saved settings while switching a port to HTTPS. Usually a one-off. |
| "Invalid request. Please try again." | INVALID_REQUEST_BODY | The data HalAxe's screen sent to its own backend was not in the shape the backend expected. Can't normally happen from the screen itself, points to a mismatch between the HalAxe screen and the running HalAxe program, for example after an incomplete update. |
| "The proxy server is not running on that port." | SERVER_NOT_RUNNING | Shown after clicking Start, Stop, or Token, if no proxy is currently listening on that environment's port, usually a brief timing issue while a proxy starts, stops, or switches between HTTP and HTTPS. |
| "The environment is not currently active." | ENV_NOT_REGISTERED | Shown after clicking Start, Stop, or Token. The proxy on that port is running, but this environment is not one of the ones it is currently serving, for example Stop was clicked for this environment moments earlier, but the table on screen had not yet refreshed before another action for the same environment was sent. |
| "Environment not found." | ENV_NOT_FOUND | Shown when saving or deleting an environment that no longer exists in storage, because it was deleted, or its name changed, by an earlier action, but the table on screen had not yet refreshed before this action, targeting the same name, was sent. |
| "This environment does not use token protection." | TOKEN_PROTECTION_DISABLED | Shown after clicking Token or Start for an environment where Require environment token on each /load request is off. The Token button should not normally be shown in that case, so this means the screen's view of the environment is out of date. |
| "Invalid port number." | INVALID_PORT_NUMBER | Shown when turning the HTTPS switch on or off for a port in HTTPS Ports. The port number for that action comes from HalAxe itself, not from anything you type, so this means that internal value was unexpectedly malformed. |
| "Failed to load environments. Please try again." | ENV_LOAD_FAILED | The environment json file in HalAxe's settings folder could not be read or decrypted, for example because it is missing, damaged, or the encryption key no longer matches it, or because the settings folder itself could not be read. |
| "Failed to save the environment. Please try again." | ENV_SAVE_FAILED | Shown after creating, editing, or importing an environment, or after using Fix All for Redirect URIs, if writing the updated environment json file fails, for example the disk is full, the file is locked by another program, or HalAxe does not have permission to write to its settings folder. |
| "Failed to delete the environment. Please try again." | ENV_DELETE_FAILED | Same cause as ENV_SAVE_FAILED, the shorter environment list could not be written back to the environment json file. |
| "Failed to open the certificate folder." | CERT_FOLDER_FAILED | Shown when clicking Open Cert Folder, if HalAxe could not ask the operating system to open its cert folder in a file browser. The folder may not exist yet (create a certificate first by turning on Enable Internal HTTPS), or the computer's "open folder" command is unavailable. |
| "HalAxe couldn't open the browser. Check that a default browser is set." | BROWSER_OPEN_FAILED | Shown when HalAxe tries to launch your web browser but the operating system's "open URL" command fails, most often because no default browser is set. It appears as a banner after clicking a system tray item (Check for updates, Support, or Open Help), or in an environment's log during a browser-based login (Authorization Code / PKCE) when the sign-in page could not be opened. |
| "Session expired. Open HalAxe from the system tray." | INVALID_SESSION_TOKEN | Shown as a banner when the connection between the browser page and HalAxe has timed out. Close the tab and reopen HalAxe from the system tray icon to start a fresh session. |
| (Full-screen "Access Restricted" page, no banner) | INVALID_LAUNCH_TOKEN | Shown as a full-screen notice instead of a small banner. This happens when a HalAxe URL is opened directly in the browser after the startup link has already been used or has expired. Open HalAxe from the system tray icon to get a fresh link. |
| "Failed to stop proxy servers." | SERVERS_STOP_FAILED | Reserved code. Defined in the error system but not currently returned by any HalAxe operation. If seen, it would mean that shutting down all running proxy servers failed. Restart HalAxe. |
| "Method not allowed." | METHOD_NOT_ALLOWED | Returned by HalAxe's internal API if a request arrives using the wrong HTTP method on one of its endpoints. Cannot occur from the normal HalAxe screen. Points to a mismatch between the screen version and the running program, or to a call made to HalAxe's internal API from outside the screen. |
| "Access denied." | FORBIDDEN | Returned before any endpoint logic runs, if the HTTP request's Host header does not match HalAxe's expected loopback address and port. This is a DNS rebinding guard. Cannot occur from the normal HalAxe screen. May appear if a browser extension, network proxy, or security tool is rewriting the Host header, or if a HalAxe URL is opened from a context other than the one HalAxe launched. |
| "The requested MCP method or tool is not supported." | MCP_METHOD_NOT_FOUND | The AI tool sent a JSON-RPC method name or tool name that HalAxe does not recognise. Points to a mismatch between the AI connector and the running HalAxe version, or an incorrectly configured MCP tool definition. |
| "Invalid query. Required field '{field}' is missing." | MCP_QUERY_INVALID | A required parameter was missing from an MCP tool call. The message names the specific field. Points to the AI sending an incomplete tool call, or a save_query call with a missing name, env, or url field. |
| "Failed to save query '{name}'." | MCP_QUERY_SAVE_FAILED | HalAxe could not write the saved-query file to disk after a save_query call. Same kind of storage or permissions problem as ENV_SAVE_FAILED, but for the query store file. |
| "Failed to load saved queries." | MCP_QUERY_LOAD_FAILED | HalAxe could not read or parse the saved-query file when handling a list_queries or run_query call. Check that HalAxe's settings folder is readable and the query store file is not corrupted. |
Setting that fails silently
| What you'll notice | Internal code (for IT) | What is likely causing it |
|---|---|---|
| The Stop all servers when active tab is closed checkbox flips back to its previous state by itself, with no banner shown | SETTINGS_SAVE_FAILED | HalAxe could not write its settings.json file when saving this preference, usually the same kind of storage or permission problem as ENV_SAVE_FAILED, but for settings.json instead of the environment json file. The screen does not show a message for this failure. |
Startup messages
These messages appear before or during HalAxe startup, before the main screen is ready. They are shown in a separate window as full messages, never as raw codes.
| Message shown | Internal code (for IT) | What is likely causing it |
|---|---|---|
| "Could not find a writable storage location. Check application permissions." | CONFIG_DIR_FAILED | None of HalAxe's candidate settings folders, the normal application-data folder, a .halaxe folder in the user's home folder, or a halaxe folder next to the program, could be created or written to. Points to a serious permissions or storage problem on this computer. |
| "The application server failed to start. Close any other running instances and try again." | FRONTEND_START_FAILED | HalAxe could not open its screen. Close all other HalAxe windows and try again. If the problem continues, check Task Manager for any HalAxe processes still running and end them before trying again. |
| "Cannot bind to localhost or 127.0.0.1. Check your network configuration." | LOOPBACK_UNAVAILABLE | Neither localhost nor 127.0.0.1 could be bound to a port at all, typically caused by security software, a VPN, or a network configuration that blocks local loopback connections entirely. This is different from the localhost/127.0.0.1 mismatch described in section 15, which is not fatal and is fixable from the screen. |
20. Application Logs
HalAxe writes a log entry every time an internal event occurs, such as a warning, an error, or a significant operation. These logs are intended for diagnosing issues and sharing with IT or support when something goes wrong.
Log location
Logs are stored in a logs folder inside HalAxe's storage folder (see
section 2, "System Requirements", for the location of that folder). Each day,
HalAxe creates a new log file named:
halaxe-YYYY-MM-DD.log
The logs folder and today's file are created the first time HalAxe writes a
log entry that day. If nothing noteworthy has happened yet, the file will not
exist.
Retention - no automatic cleanup
HalAxe never deletes log files automatically. There is no scheduled cleanup job and no maximum number of files. Log files accumulate indefinitely. If disk space becomes a concern, you can open the logs folder and remove old files manually.
Opening the logs folder
Click the ๐ button in the top-right area of the HalAxe screen (next to
the โ help button) to open the logs folder in your file manager. If the folder
does not yet exist, HalAxe creates it before opening it.
Log viewer errors
| Message | What it means |
|---|---|
| "Could not create the logs folder." | HalAxe could not create the logs folder, usually a permissions problem. Try running HalAxe as an administrator or check that the storage folder is writable. The ๐ button will not open the folder until this is resolved. |
| "Could not open the logs folder." | The folder exists but the operating system's open-folder command failed. A dialog opens showing recent in-memory log entries. Contact IT if the problem persists. |
| "Last log entry could not be written to disk." | A permissions problem or full disk prevented the log file from being written. The entry is still visible in memory. The dialog still opens so you can read and copy recent entries even though they could not be saved to disk. Each entry can be expanded to reveal its full call stack. |
| "Failed to load log." | A log entry's details could not be retrieved inside the dialog. Close and reopen the dialog and try again. |
HalAxe Targets Premium
Deployment targets are ready-made connection profiles for specific systems.
Targets are a Premium feature. In the free version the target options are hidden and cannot be turned on. Activate your free premium year, or buy Premium, to use them.
Turning on a target
Targets are enabled from the HalAxe icon in the system tray: right-click it, open the Targets menu, and tick the one you want. Once enabled, the target appears as an option when you add or edit an environment.
IFS ERP
The IFS ERP target connects HalAxe to an IFS Cloud or IFS Applications system.
- When you turn on IFS for an environment (the IFS button under the Base URL field), HalAxe fills in the correct connection settings from your Base URL: the port, login method, client ID, scopes, and sign-in addresses. You do not need to look any of these up yourself.
- For the AI assistant, HalAxe understands the IFS projection model: so the AI builds correct requests against your IFS APIs.
You can still change any auto-filled value afterwards.