Command line basics
CLI installation
Currently you need Go to install the 1Backend CLI:
go install github.com/1backend/1backend/cli/oo@latest
CLI usage
Assuming the daemon is running already (see this section about that), you can interact with it through the CLI.
Logging in
$ oo login 1backend
Enter password:
$ oo whoami
slug: 1backend
id: usr_eH9mXKgmb0
roles:
- user-svc:admin
Environments
Local
The local environment is included by default in the env list:
$ oo env ls
ENV NAME SELECTED URL DESCRIPTION REACHABLE
local * http://127.0.0.1:11337 false
Custom environments
Adding your non-local (prod etc.) environment is very easy:
$ oo env add prod https://yourdomain.com
$ oo env ls
ENV NAME SELECTED URL DESCRIPTION REACHABLE
local * http://127.0.0.1:11337 false
prod https://yourdomain.com true
Then you can select your new environment:
$ oo env select prod
$ oo env ls
ENV NAME SELECTED URL DESCRIPTION REACHABLE
local http://127.0.0.1:11337 false
prod * https://yourdomain.com true
Endpoint calls
Let's make a GET call:
$ oo get /secret-svc/is-secure
{
"isSecure":false
}
Or a POST call:
$ oo post /user-svc/users
{
"users": [
{
"id": "usr_g5WbJXmxuQ",
"createdAt": "2025-06-05T16:58:15.674576217+02:00",
"updatedAt": "2025-06-05T16:58:15.674576217+02:00",
"name": "Admin",
"slug": "1backend"
}
],
# Some other fields might be included such as for
# pagination or count.
}
Or a POST call with some request body parameters:
$ oo post /secret-svc/encrypt --value=hey
{
"value": "UsoGq6VCa0+89pzIPhgU49kgoL0p/3jc90IsOR/8ldk="
}
Here we should talk a bit about how CLI flags get mapped to request bodies.
CLI flag to request body mapping
When doing POST, PUT and DELETE queries, CLI flags can be turned into multilevel JSON request bodies, such as this:
$ oo post /registry-svc/echo --value=hey
Is roughly equivalent to the pseudocurl
curl -XPOST -H "Auth..." $ADDR/registry-svc/echo -d '{"value": "hey"}'
Similarly, dot . and dash - delimiters get turned into a multidimensional JSON:
$ oo post /registry-svc/echo --value-text=hey
# turns into
{
"value": {
"text": "hey"
}
}
$ oo post /registry-svc/echo --value.text=hey
# turns into
{
"value": {
"text": "hey"
}
}
$ oo post /registry-svc/echo --valueText=hey
# turns into
{
"valueText": "hey"
}