MCPcopy
hub / github.com/OliveTin/OliveTin

github.com/OliveTin/OliveTin @3000.16.2 sqlite

repository ↗ · DeepWiki ↗ · release 3000.16.2 ↗
2,147 symbols 5,087 edges 194 files 234 documented · 11%
README

project logo

OliveTin

OliveTin gives safe and simple access to predefined shell commands from a web interface.

Maturity Badge Discord Awesome CII Best Practices

Go Report Card AI Autonomy Level

OliveTin 2k to 3k upgrade guide

screenshot More screenshots below

All documentation can be found at docs.olivetin.app. This includes installation and usage guide, etc.

The AsciiDoc sources for that site live in this repository under docs/ (Antora component). The docs.olivetin.app repository contains the Antora playbook, theme supplemental files, and the workflow that publishes GitHub Pages.

Use cases

Safely give access to commands, for less technical people;

  • eg: Give your family a button to podman restart plex
  • eg: Give junior admins a simple web form with dropdowns, to start your custom script. backupScript.sh --folder {{ customerName }}
  • eg: Enable SSH access to the server for the next 20 mins firewall-cmd --add-service ssh --timeout 20m

Simplify complex commands, make them accessible and repeatable;

  • eg: Expose complex commands on touchscreen tablets stuck on walls around your house. wake-on-lan aa:bb:cc:11:22:33
  • eg: Run long-lived commands on your servers from your cell phone. dnf update -y
  • eg: Define complex commands with lots of preset arguments, and turn a few arguments into dropdown select boxes. docker rm {{ container }} && docker create {{ container }} && docker start {{ container }}

Join the community on Discord to talk with other users about use cases, or to ask for support in getting started.

YouTube demo video

YouTube demo video

Features

  • Responsive, touch-friendly UI - great for tablets and mobile
  • Super simple config in YAML - because if it's not YAML now-a-days, it's not "cloud native" :-)
  • Dark mode - for those of you that roll that way.
  • Accessible - passes all the accessibility checks in Firefox, and issues with accessibility are taken seriously.
  • Container - available for quickly testing and getting it up and running, great for the selfhosted community.
  • Integrate with anything - OliveTin just runs Linux shell commands, so theoretically you could integrate with a bunch of stuff just by using curl, ping, etc. However, writing your own shell scripts is a great way to extend OliveTin.
  • Lightweight on resources - uses only a few MB of RAM and barely any CPU. Written in Go, with a web interface written as a modern, responsive, Single Page App that uses the REST/Connect RPC API.
  • Good amount of unit tests and style checks - helps potential contributors be consistent, and helps with maintainability.

Screenshots

Desktop web browser;

screenshot

Desktop web browser (dark mode);

screenshot

Mobile screen size (responsive layout);

screenshot

No-Nonsense Software Principles

OliveTin follows these principles:

  • Open Source & Free Software: following the Open Source Definition and the Free Software Definition. All code and assets are available under the AGPL-3.0 License.
  • Independent: No company owns the code or is responsible for the projects' governance.
  • Inclusive: No "core", "pro", "premium" or "enterprise" version. The only version is the one you can download and run, and it has all the features.
  • Invisible: No usage tracking, no user tracking, no ads, and no telemetry.
  • Internal: No internet connection required for any functionality.

Documentation

All documentation can be found at docs.olivetin.app. This includes installation and usage guide, etc.

You can find instructions in the docs on how to install as a Linux package, Linux Container, on FreeBSD, Windows, MacOS and other platforms, too!

Extension points exported contracts — how you extend this code

OliveTinApiServiceClient (Interface)
OliveTinApiServiceClient is a client for the olivetin.api.v1.OliveTinApiService service. [3 implementers]
service/gen/olivetin/api/v1/apiv1connect/olivetin.connect.go
OliveTinApiServiceHandler (Interface)
OliveTinApiServiceHandler is an implementation of the olivetin.api.v1.OliveTinApiService service. [3 implementers]
service/gen/olivetin/api/v1/apiv1connect/olivetin.connect.go

Core symbols most depended-on inside this repo

FindBindingWithNoEntity
called by 59
service/internal/executor/executor_actions.go
RebuildActionMap
called by 51
service/internal/executor/executor_actions.go
getRootAndWait
called by 48
integration-tests/lib/elements.js
ExecRequest
called by 41
service/internal/executor/executor.go
stop
called by 33
integration-tests/runner.mjs
start
called by 33
integration-tests/runner.mjs
takeScreenshotOnFailure
called by 32
integration-tests/lib/elements.js
Sanitize
called by 27
service/internal/config/sanitize.go

Shape

Function 981
Method 978
Struct 165
Class 12
FuncType 4
Interface 4
TypeAlias 3

Languages

Go91%
TypeScript6%
Python3%

Modules by API surface

service/gen/olivetin/api/v1/olivetin.pb.go694 symbols
service/gen/olivetin/api/v1/apiv1connect/olivetin.connect.go110 symbols
service/internal/api/api.go109 symbols
service/internal/executor/executor.go100 symbols
service/internal/api/api_test.go43 symbols
service/internal/executor/arguments_test.go39 symbols
service/internal/config/sanitize.go38 symbols
service/scripts/find-flakey-tests-inf/main.go35 symbols
service/internal/executor/executor_test.go35 symbols
service/internal/api/dashboards.go34 symbols
service/internal/executor/arguments.go27 symbols
service/internal/executor/group_concurrency_test.go26 symbols

Dependencies from manifests, versioned

buf.build/gen/go/bufbuild/bufplugin/protocolbuffers/gov1.36.11-20250718181 · 1×
buf.build/gen/go/bufbuild/protodescriptor/protocolbuffers/gov1.36.11-20250109164 · 1×
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/gov1.36.11-20260415201 · 1×
buf.build/gen/go/bufbuild/registry/connectrpc/gov1.20.0-202605070632 · 1×
buf.build/gen/go/bufbuild/registry/protocolbuffers/gov1.36.11-20260507063 · 1×
buf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/gov1.36.11-20241007202 · 1×
buf.build/go/appv0.2.1-0.20260407195 · 1×
buf.build/go/bufpluginv0.10.0 · 1×
buf.build/go/bufprivateusagev0.1.0 · 1×
buf.build/go/interruptv1.1.0 · 1×
buf.build/go/protovalidatev1.2.0 · 1×
buf.build/go/protoyamlv0.7.0 · 1×

For agents

$ claude mcp add OliveTin \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact