MCPcopy Index your code
hub / github.com/changkun/occamy

github.com/changkun/occamy @0.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.4.0 ↗ · + Follow
1,066 symbols 2,664 edges 244 files 295 documented · 28%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

logo

Occamy

Latest relsease Build Status Go Report Card

Occamy is an open source protocol and proxy for modern remote desktop control that written in Go.

To start using Occamy

Build

Occamy support deployment with Docker or container orchestration tool, e.g. K8s. To build Occamy, you need:

git clone https://github.com/changkun/occamy.git
cd occamy
make build

Then you should be able to run occamy with:

docker run -itd occamy:latest

APIs

Occamy offers two APIs:

  • /api/v1/login distributes JWT tokens for authentication and
  • /api/v1/connect is used for WebSocket based Occamy connection.

If you build Occamy with web client, you can also access /static for web client demo.

Demo

To run a demo, you need build an occamy client first:

cd client/occamy-web
npm install && npm run build

With docker-compose, you should be able to run a working demo with:

make build
make run
make stop

Here is a working video demo:

IMAGE ALT TEXT

Contributing

Easiest way to contribute is to provide feedback! We would love to hear what you like and what you think is missing. PRs are welcome. Please follow the given PR template before you send your pull request.

Why Occamy and how it works?

Occamy implements a generic remote desktop protocol with modern approaches. It currently performs Guacamole protocol and eventually intends to redesign and propose Occamy protocol.

The benefits of Occamy that differ from Guacamole are:

  • Authentication supports
  • Simplified architecture
  • Streaming compression and optimization
  • Modern with Go

Occamy server side currently simplifies Guacamole proxy and Guacamole servlet client in a single middleware application. Any client that involves Guacamole protocol and uses WebSocket for authentication can directly switch to interact to Occamy without any changes.

Read more details in docs.

License

Occamy | MIT © 2019 Ou Changkun

Extension points exported contracts — how you extend this code

Client (Interface)
Client is a interface that defines all needed function of a client [3 implementers]
plugins/plugins.go

Core symbols most depended-on inside this repo

guac_client_log
called by 182
guacamole/src/libguac/client.c
guac_socket_write_string
called by 109
guacamole/src/libguac/socket.c
guac_user_log
called by 46
guacamole/src/libguac/user.c
guac_socket_flush
called by 43
guacamole/src/libguac/socket.c
guac_client_abort
called by 37
guacamole/src/libguac/client.c
guac_rdpdr_new_io_completion
called by 36
guacamole/src/protocols/rdp/guac_rdpdr/rdpdr_service.c
guac_user_parse_args_string
called by 35
guacamole/src/libguac/user.c
guac_terminal_send_string
called by 35
guacamole/src/protocols/ssh/terminal.c

Shape

Function 815
Method 101
Class 93
Struct 28
Enum 19
TypeAlias 9
Interface 1

Languages

C66%
Go19%
C++9%
TypeScript7%

Modules by API surface

client/occamy-web/src/components/occamy.js71 symbols
guacamole/src/protocols/ssh/terminal.c65 symbols
guacamole/src/common/surface.c38 symbols
lib/socket.go30 symbols
guacamole/src/libguac/protocol.c28 symbols
guacamole/src/protocols/rdp/rdp_fs.c24 symbols
guacamole/src/libguac/client.c23 symbols
guacamole/src/protocols/ssh/terminal_handlers.c22 symbols
guacamole/src/protocols/ssh/terminal_display.c21 symbols
guacamole/src/libguac/user.c17 symbols
guacamole/src/libguac/user-handlers.c17 symbols
guacamole/src/libguac/socket.c15 symbols

For agents

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

⬇ download graph artifact