Log in with a device-style sign-in: it prints a code and a link, opens the browser, waits until you approve it (a phone is fine), then stores the session in the OS keychain (or a 0600 file). Works over SSH and in a cloud session someone is watching, since nothing listens locally. The session lasts 30 days. With –repo, an agent running unattended (a cloud session, a routine, a scheduled job) signs in for the repository it has checked out instead: it proves it can push to a repository connected to an Overlane project through the Overlane GitHub App and gets a one-hour token for that one project. Nobody creates or copies a token. Other commands sign in for the repository on their own when there is no terminal.
Usage
overlane auth login [--service URL] [--no-browser] [--repo] [--dry-run]Flags
| Flag | Type | Required | Default | Description |
|---|---|---|---|---|
--service |
string | no | The service address (default: OVERLANE_SERVICE_URL, then the project’s binding, then the hosted service) | |
--no-browser |
boolean | no | Print the link and code without opening a browser | |
--repo |
boolean | no | Sign in for the checked-out repository instead of as a person (unattended agents) | |
--dry-run |
boolean | no | Print the requests and file changes this command would make, then stop. Needs no credentials. |
Examples
overlane auth login
overlane auth login --no-browser
overlane auth login --repo
overlane auth login --dry-runBehavior
- Effect:
write(changes local or hosted state). - Needs credentials: no. Uses the network: yes.
- Supports
--dry-run: yes. Accepts--force: no. - Machine-readable description:
overlane schema auth login.
Result
With --json (the default when stdout is not a terminal) the command prints this JSON Schema’s shape on stdout.
{
"anyOf": [
{
"type": "object",
"properties": {
"signedIn": {
"type": "boolean",
"const": true
},
"service": {
"type": "string"
},
"how": {
"type": "string",
"enum": [
"keychain",
"file"
]
},
"method": {
"type": "string",
"enum": [
"device",
"repository"
]
},
"tenantId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"next": {
"type": "string"
}
},
"required": [
"signedIn",
"service",
"how",
"method",
"tenantId",
"expiresAt",
"next"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"const": true
},
"service": {
"type": "string"
},
"requests": {
"type": "array",
"items": {
"type": "object",
"properties": {
"method": {
"type": "string"
},
"path": {
"type": "string"
},
"body": {},
"note": {
"type": "string"
}
},
"required": [
"method",
"path"
],
"additionalProperties": false
}
},
"commands": {
"type": "array",
"items": {
"type": "string"
}
},
"writes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"write",
"append",
"delete"
]
},
"description": {
"type": "string"
}
},
"required": [
"path",
"action",
"description"
],
"additionalProperties": false
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"dryRun",
"requests",
"commands",
"writes",
"notes"
],
"additionalProperties": false
}
]
}See exit codes for the status the process returns.