License configuration¶
ubCode and the CLI application ubc are provided in 2 different licensing modes: commercial and open source.
For open source projects, that is projects that are publicly available, we grant you a free open source license. We do that because we value open source software and want to support the community.
For usage in non-public projects, a commercial license is required.
Commercial¶
If not already done, please request a license key from useblocks. The process for this is not yet automated, so please contact our support directly via e-mail.
We also offer free trials, so that you can evaluate ubCode in your own environment. Please get in touch with us for that.
To configure the license for ubCode, place a file named ubcode.toml in the following location:
For Linux:
~/.config/ubcode/ubcode.toml
For Windows:
C:\Users\<username>\AppData\Local\useblocks\ubcode\ubcode.toml
For MacOS:
~/Library/Application Support/ubcode/ubcode.toml
The file should have the following content:
[license]
key = "AAAAA-BBBBB-CCCCC-DDDDD"
user = "mail@example.com"
If you add or change the key, to let it take effect in the VS Code extension,
you need to restart the server, with the command Ctrl+Shift+P and then
ubCode: Restart language server.
Systems licenses¶
A systems license is a license key issued for automation,
such as a CI/CD runner, rather than for a person:
it is not tied to a user e-mail, so it needs no user setting.
Only the ubc CLI accepts a systems license,
for the commands you run in a pipeline and for ubc serve mcp.
The VS Code extension’s language server does not:
with only a systems license configured,
the editor treats the project as unlicensed unless it is open source
(see What works without a license).
Proxies¶
License activation requires an active Internet connection.
System proxies are automatically detected and used by ubCode
(the standard ALL_PROXY, HTTPS_PROXY, HTTP_PROXY and NO_PROXY environment variables).
If that fails or cannot be done on system level,
the proxy server can also be configured in a dedicated section of ubcode.toml:
[proxy]
https = "<proxy-domain-or-ip>"
Note
ubCode only supports HTTP CONNECT proxies,
given as host:port or http://host:port.
For license checks, a proxy given as https://... is refused, and so is a configured SOCKS proxy.
Machines without Internet access¶
A license key is checked online, against the license server https://api.cryptolens.io.
A successful check is cached for 3 days (see Caching),
so a machine that was licensed recently keeps working offline for that long.
When the license server cannot be reached, a license check gives up after at most 20 seconds per request (10 seconds to open the connection; on Windows, a blocked certificate revocation check can add up to 10 seconds), and reports the endpoint it could not reach. This matters for build machines, such as CI runners, without a route to the Internet. They have two options:
use an offline license instead of the license key, which needs no network access at all, or
reach the license server through an HTTP CONNECT proxy, see Proxies.
Environmental variables¶
In the CLI, environmental variables can also set, to override the configuration in the ubcode.toml file:
UBCODE_LICENSE_KEY: The license key.UBCODE_LICENSE_FILE: The path to an offline license file.UBCODE_LICENSE_USER: The user e-mail.UBCODE_LICENSE_HTTPS_PROXY: The proxy server.
License handling¶
License keys supplied by useblocks are commonly user based, which means a valid user e-mail must be provided with the license key.
For data protection, the e-mail is irreversibly obfuscated on the local user’s machine, before being sent to the license server for activation.
Caching¶
Online license requests are cached locally for 3 days to avoid unnecessary network traffic, faster startup times and to be able to work offline for a limited time.
The cache is stored in platform specific cache directories, e.g.
for Linux under ~/.cache/ublicense/.
The directory can be safely deleted to clear the cache. Online license requests will then be repeated the next time ubCode is started. Also open source checks will be repeated.
Offline licenses¶
If agreed upon, useblocks can also provide offline licenses. The provided license file is configured as follows:
[license]
file = "ActivationFile.skm"
user = "mail@example.com"
If the license file is placed in the same directory as the ubcode.toml file and named “ActivationFile.skm”,
it will be picked up automatically.
A user is still required for offline licenses, but the property key is not needed.
Remove the key when switching to an offline license,
so that it cannot take precedence over the license file.
Open Source¶
ubCode detects whether your VS Code workspace folders are located within publicly reachable Git projects.
Every remote of the repository must be reachable without authentication on one of the supported hosts:
github.com, gitlab.com, bitbucket.org, codeberg.org and gitea.com
(a self-hosted Git server is not detected).
Submodules and nested repositories must fulfill the same conditions.
The ubc CLI application does the same, but based on paths of the analyzed projects.
Note
The test requests to the Git remotes are cached for a couple of days, so that they are not repeated unnecessarily.
Note
The requests to test this are unauthenticated.
They use the proxy named in the standard ALL_PROXY, HTTPS_PROXY or HTTP_PROXY environment variables,
honouring NO_PROXY,
but not the [proxy] table of ubcode.toml or UBCODE_LICENSE_HTTPS_PROXY,
which apply to the license server only.
Please get in touch with us if you have any issues with this.
What works without a license¶
ubCode has no feature tiers. An active license, commercial or open source, unlocks everything; without one, the same features are available within the limits below.
How the license is decided¶
Each check first tries the commercial license (a license key, or an offline license file). If there is none, or it cannot be activated, ubCode tries the open-source check. If that fails too, the project is unlicensed.
The open-source check is technical: it only tests that the Git repositories holding the project are publicly reachable. It does not look at your project’s license. The license terms ask for more: an OSI-approved open source license, and the complete source code in a public repository. Passing the check does not by itself mean a project meets those terms.
Which paths are checked:
in VS Code, every workspace folder, once when the language server starts;
in the CLI, the project path the command runs on (the current directory by default), or every path you name for
ubc check <paths>,ubc check --per-file,ubc formatandubc diff;in the MCP server, the project of the file each tool call names (the directory of its nearest
ubproject.toml), or the server’s default project when the call names no file.
The command line¶
The file limit counts the project’s source documents,
the same files ubc build list-documents lists.
A command over a limit stops with an error that names the limit,
followed by the reason no license was found.
Command |
Without a license |
|---|---|
|
Works on projects of up to 5 source files. |
|
Works on projects of up to 5 source files and up to 100 needs. |
|
Works on projects of up to 5 source files and up to 100 targets. |
|
Works on projects of up to 5 source files and up to 100 needs. |
|
Work on projects of at most 100 needs, with no limit on source files. |
|
Refused, however small the project. |
|
Starts, with the limits in The editor. |
|
Starts, but refuses the project tools; see The MCP server. |
|
No license needed. |
The editor¶
The VS Code extension, like ubc serve lsp in any other editor,
indexes and checks a project of any size without a license.
Diagnostics, hover, completion, navigation and formatting work in full,
apart from the list-based features below.
Without a license:
the preview shows the first 5 top-level blocks of a document, followed by a notice;
the Needs Index and Needs Json views, the search in the needs graph view, and the workflow gap warnings in the Problems panel cover at most 10 needs;
the report preview refuses to render a project of more than 100 needs;
the panels that run
ubc agentcommands for you are subject to those commands’ limit (see above).
The other workflow views the language server computes itself have no such limit.
The MCP server¶
The MCP server (ubc serve mcp, which the VS Code extension also registers)
serves a project’s data only when that project has an active license, whatever its size:
get_graph_schema, query_cypher, search_references and resolve_reference
answer “Requires active license” otherwise.
The documentation tools, search_docs and fetch_doc_page, need no license:
they read the public sphinx-needs and ubCode documentation, not your project.
See Model Context Protocol (MCP) server for what each tool does.
To evaluate ubCode on a larger private project, ask us for a free trial (see Commercial).
License terms¶
ubCode is proprietary software developed and owned by useblocks GmbH.
While the source code of ubCode itself is not publicly available (closed source), ubCode is offered free of charge for use in Open Source Software (OSS) projects that fulfill the following conditions:
the OSS project must be licensed under an OSI-approved open source license, and
the complete source code of the OSS project must be publicly available in a generally accessible Git repository (e.g. GitHub, GitLab).
Any use of ubCode in commercial environments - including but not limited to closed-source projects, commercial products, services, platforms, or internal tools - requires a separate commercial license agreement with useblocks GmbH.
Please contact us for licensing inquiries regarding commercial use.