Skip to main content

A barebones terminal interaction API

Project description

⚡ Open Terminal

A lightweight API for running shell commands remotely — with real-time streaming and secure access.

Getting Started

Docker (recommended)

docker run -p 8000:8000 -e OPEN_TERMINAL_API_KEY=your-secret-key ghcr.io/open-webui/open-terminal

If no API key is provided, one is auto-generated and printed on startup.

Build from Source

docker build -t open-terminal .
docker run -p 8000:8000 open-terminal

Bare Metal (if you like to live dangerously)

pip install open-terminal
open-terminal run --host 0.0.0.0 --port 8000 --api-key your-secret-key
Option Default Env Var Description
--host 0.0.0.0 Bind address
--port 8000 Bind port
--api-key auto-generated OPEN_TERMINAL_API_KEY Bearer API key

Usage

Run a Command

curl -X POST http://localhost:8000/execute \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"command": "echo hello"}'

Stream Output

curl -X POST "http://localhost:8000/execute?stream=true" \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"command": "for i in 1 2 3; do echo $i; sleep 1; done"}'

Output streams as JSONL:

{"type": "stdout", "data": "1\n"}
{"type": "stdout", "data": "2\n"}
{"type": "stdout", "data": "3\n"}
{"type": "exit", "data": 0}

Upload a File

From URL:

curl -X POST "http://localhost:8000/files/upload?url=https://example.com/data.csv&path=/tmp/data.csv" \
  -H "Authorization: Bearer <api-key>"

Direct upload:

curl -X POST "http://localhost:8000/files/upload?path=/tmp/data.csv" \
  -H "Authorization: Bearer <api-key>" \
  -F "file=@local_file.csv"

Download a File

curl "http://localhost:8000/files/download?path=/tmp/output.csv" \
  -H "Authorization: Bearer <api-key>"

Returns a temporary download link (valid for 5 minutes, no auth needed):

{"url": "http://localhost:8000/files/download/a1b2c3d4..."}

API Docs

Interactive API documentation is available at http://localhost:8000/docs.

License

MIT — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

open_terminal-0.1.6.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

open_terminal-0.1.6-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file open_terminal-0.1.6.tar.gz.

File metadata

  • Download URL: open_terminal-0.1.6.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.0

File hashes

Hashes for open_terminal-0.1.6.tar.gz
Algorithm Hash digest
SHA256 1fa19ccb7d5860e4cd468648669190ff6bafd8d1640812672b885fb27f91679e
MD5 01b9266d03a5ccc1c10551b2cdb6e968
BLAKE2b-256 d399a78191c3b6199646c402e93dcd61886a5023ccd183ba4d27c71c859c9ae3

See more details on using hashes here.

File details

Details for the file open_terminal-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for open_terminal-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d756b4e3d701ddba32939f506ef8c20158fd35f0158a514b32e6be314f3e682c
MD5 6d68a58d979a8dbf65b87762bc746100
BLAKE2b-256 a28800ea7280ec046254d5a926e692cf6d7ca0a72e6f47d3566a026d5892ea2b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page