core: fix HTTP exception handling order to prevent NamedError from masking HTTP exceptions
docs: add OPENCODE_PASSWORD environment variable documentation for basic auth
This commit is contained in:
@@ -83,7 +83,6 @@ export namespace Server {
|
|||||||
log.error("failed", {
|
log.error("failed", {
|
||||||
error: err,
|
error: err,
|
||||||
})
|
})
|
||||||
if (err instanceof HTTPException) return err.getResponse()
|
|
||||||
if (err instanceof NamedError) {
|
if (err instanceof NamedError) {
|
||||||
let status: ContentfulStatusCode
|
let status: ContentfulStatusCode
|
||||||
if (err instanceof Storage.NotFoundError) status = 404
|
if (err instanceof Storage.NotFoundError) status = 404
|
||||||
@@ -92,6 +91,7 @@ export namespace Server {
|
|||||||
else status = 500
|
else status = 500
|
||||||
return c.json(err.toObject(), { status })
|
return c.json(err.toObject(), { status })
|
||||||
}
|
}
|
||||||
|
if (err instanceof HTTPException) return err.getResponse()
|
||||||
const message = err instanceof Error && err.stack ? err.stack : err.toString()
|
const message = err instanceof Error && err.stack ? err.stack : err.toString()
|
||||||
return c.json(new NamedError.Unknown({ message }).toObject(), {
|
return c.json(new NamedError.Unknown({ message }).toObject(), {
|
||||||
status: 500,
|
status: 500,
|
||||||
|
|||||||
@@ -358,7 +358,7 @@ Start a headless OpenCode server for API access. Check out the [server docs](/do
|
|||||||
opencode serve
|
opencode serve
|
||||||
```
|
```
|
||||||
|
|
||||||
This starts an HTTP server that provides API access to opencode functionality without the TUI interface.
|
This starts an HTTP server that provides API access to opencode functionality without the TUI interface. Set `OPENCODE_PASSWORD` to enable HTTP basic auth (username `opencode`).
|
||||||
|
|
||||||
#### Flags
|
#### Flags
|
||||||
|
|
||||||
@@ -454,7 +454,7 @@ Start a headless OpenCode server with a web interface.
|
|||||||
opencode web
|
opencode web
|
||||||
```
|
```
|
||||||
|
|
||||||
This starts an HTTP server and opens a web browser to access OpenCode through a web interface.
|
This starts an HTTP server and opens a web browser to access OpenCode through a web interface. Set `OPENCODE_PASSWORD` to enable HTTP basic auth (username `opencode`).
|
||||||
|
|
||||||
#### Flags
|
#### Flags
|
||||||
|
|
||||||
@@ -551,26 +551,27 @@ The opencode CLI takes the following global flags.
|
|||||||
|
|
||||||
OpenCode can be configured using environment variables.
|
OpenCode can be configured using environment variables.
|
||||||
|
|
||||||
| Variable | Type | Description |
|
| Variable | Type | Description |
|
||||||
| ------------------------------------- | ------- | ------------------------------------------------ |
|
| ------------------------------------- | ------- | ----------------------------------------------------- |
|
||||||
| `OPENCODE_AUTO_SHARE` | boolean | Automatically share sessions |
|
| `OPENCODE_AUTO_SHARE` | boolean | Automatically share sessions |
|
||||||
| `OPENCODE_GIT_BASH_PATH` | string | Path to Git Bash executable on Windows |
|
| `OPENCODE_GIT_BASH_PATH` | string | Path to Git Bash executable on Windows |
|
||||||
| `OPENCODE_CONFIG` | string | Path to config file |
|
| `OPENCODE_CONFIG` | string | Path to config file |
|
||||||
| `OPENCODE_CONFIG_DIR` | string | Path to config directory |
|
| `OPENCODE_CONFIG_DIR` | string | Path to config directory |
|
||||||
| `OPENCODE_CONFIG_CONTENT` | string | Inline json config content |
|
| `OPENCODE_CONFIG_CONTENT` | string | Inline json config content |
|
||||||
| `OPENCODE_DISABLE_AUTOUPDATE` | boolean | Disable automatic update checks |
|
| `OPENCODE_DISABLE_AUTOUPDATE` | boolean | Disable automatic update checks |
|
||||||
| `OPENCODE_DISABLE_PRUNE` | boolean | Disable pruning of old data |
|
| `OPENCODE_DISABLE_PRUNE` | boolean | Disable pruning of old data |
|
||||||
| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolean | Disable automatic terminal title updates |
|
| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolean | Disable automatic terminal title updates |
|
||||||
| `OPENCODE_PERMISSION` | string | Inlined json permissions config |
|
| `OPENCODE_PERMISSION` | string | Inlined json permissions config |
|
||||||
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolean | Disable default plugins |
|
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolean | Disable default plugins |
|
||||||
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolean | Disable automatic LSP server downloads |
|
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolean | Disable automatic LSP server downloads |
|
||||||
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolean | Enable experimental models |
|
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolean | Enable experimental models |
|
||||||
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | Disable automatic context compaction |
|
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | Disable automatic context compaction |
|
||||||
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolean | Disable reading from `.claude` (prompt + skills) |
|
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolean | Disable reading from `.claude` (prompt + skills) |
|
||||||
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolean | Disable reading `~/.claude/CLAUDE.md` |
|
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolean | Disable reading `~/.claude/CLAUDE.md` |
|
||||||
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolean | Disable loading `.claude/skills` |
|
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolean | Disable loading `.claude/skills` |
|
||||||
| `OPENCODE_CLIENT` | string | Client identifier (defaults to `cli`) |
|
| `OPENCODE_CLIENT` | string | Client identifier (defaults to `cli`) |
|
||||||
| `OPENCODE_ENABLE_EXA` | boolean | Enable Exa web search tools |
|
| `OPENCODE_ENABLE_EXA` | boolean | Enable Exa web search tools |
|
||||||
|
| `OPENCODE_PASSWORD` | string | Enable basic auth for `serve`/`web` (user `opencode`) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,16 @@ opencode serve --cors http://localhost:5173 --cors https://app.example.com
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Authentication
|
||||||
|
|
||||||
|
Set `OPENCODE_PASSWORD` to protect the server with HTTP basic auth. The username is always `opencode`, and the password is the value of `OPENCODE_PASSWORD`. This applies to both `opencode serve` and `opencode web`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
OPENCODE_PASSWORD=your-password opencode serve
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### How it works
|
### How it works
|
||||||
|
|
||||||
When you run `opencode` it starts a TUI and a server. Where the TUI is the
|
When you run `opencode` it starts a TUI and a server. Where the TUI is the
|
||||||
|
|||||||
Reference in New Issue
Block a user