artel

module
v1.0.27 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 31, 2026 License: AGPL-3.0

README

github.com/ruf-dev/artel

generated with love for coding by RedSock CLI

License

Artel is free software licensed under the GNU AGPL-3.0. This means you're free to use, modify, and redistribute it — including running a modified version as a hosted service — as long as you make the corresponding source available to your users under the same license. See TRADEMARK.md for the separate policy on use of the "Artel" name and logo.

Running locally

For a standard multi-container dev setup, see docker-compose.yaml.

For an all-in-one container (Postgres, CouchDB, Garage and the app bundled together — handy for personal/self-hosted use), see docs/omnibus.md.

Directories

Path Synopsis
cmd
migrate command
SPDX-License-Identifier: AGPL-3.0-only
SPDX-License-Identifier: AGPL-3.0-only
service command
SPDX-License-Identifier: AGPL-3.0-only
SPDX-License-Identifier: AGPL-3.0-only
workbenchimage command
Command workbenchimage prints the content-hash tag the backend's EnsureImage (internal/clients/workbenchdocker/image.go) will look for on the Docker daemon, so a local `docker build` can be tagged to match it exactly — see `make workbench-image`.
Command workbenchimage prints the content-hash tag the backend's EnsureImage (internal/clients/workbenchdocker/image.go) will look for on the Docker daemon, so a local `docker build` can be tagged to match it exactly — see `make workbench-image`.
deploy
workbench
Package workbenchimage embeds the workbench Docker image's build context (Dockerfile, entrypoint.sh, tmux.conf, and bridge.tar — a packaged copy of the bridge/ Go module tree, see ./gen_bridge_tar.go) so it can be built directly through the Docker Engine API at runtime — see internal/clients/workbenchdocker/image.go — instead of requiring a manual `docker build` step on every docker host.
Package workbenchimage embeds the workbench Docker image's build context (Dockerfile, entrypoint.sh, tmux.conf, and bridge.tar — a packaged copy of the bridge/ Go module tree, see ./gen_bridge_tar.go) so it can be built directly through the Docker Engine API at runtime — see internal/clients/workbenchdocker/image.go — instead of requiring a manual `docker build` step on every docker host.
internal
api/server/artel_api
Package artel_api is a reverse proxy.
Package artel_api is a reverse proxy.
app
chatprotocol
Package chatprotocol defines the ChatEvent wire protocol exchanged over the workbench chat WebSocket between the in-container bridge process and any consumer (web frontend, Telegram bot relay).
Package chatprotocol defines the ChatEvent wire protocol exchanged over the workbench chat WebSocket between the in-container bridge process and any consumer (web frontend, Telegram bot relay).
clients/anthropic
Package anthropic is a thin wrapper around the official Anthropic SDK (github.com/anthropics/anthropic-sdk-go), used to validate a user-supplied API key (via ListModels, a zero-token metadata call) and to run single-turn, non-streaming completions (via Complete) for the tract engine's "Call LLM" step.
Package anthropic is a thin wrapper around the official Anthropic SDK (github.com/anthropics/anthropic-sdk-go), used to validate a user-supplied API key (via ListModels, a zero-token metadata call) and to run single-turn, non-streaming completions (via Complete) for the tract engine's "Call LLM" step.
clients/openai
Package openai is a thin wrapper around the official OpenAI SDK (github.com/openai/openai-go), used to validate a user-supplied API key (via ListModels, a zero-token metadata call) and to run single-turn, non-streaming completions (via Complete) for the tract engine's "Call LLM" step.
Package openai is a thin wrapper around the official OpenAI SDK (github.com/openai/openai-go), used to validate a user-supplied API key (via ListModels, a zero-token metadata call) and to run single-turn, non-streaming completions (via Complete) for the tract engine's "Call LLM" step.
clients/openrouter
Package openrouter is a thin wrapper around OpenRouter's own account-management REST API (https://openrouter.ai/api/v1), used to fetch the caller's key usage/limit/balance info (GetKeyInfo).
Package openrouter is a thin wrapper around OpenRouter's own account-management REST API (https://openrouter.ai/api/v1), used to fetch the caller's key usage/limit/balance info (GetKeyInfo).
clients/postgres
Code generated by RedSock CLI.
Code generated by RedSock CLI.
clients/vaultbucket
Package vaultbucket resolves the storage.BinaryStore backing a vault's non-markdown content — shared by the MCP vault-tool executor and the notes service's folder export/import/delete methods so the S3-vs-CouchDB-adapter decision lives in one place.
Package vaultbucket resolves the storage.BinaryStore backing a vault's non-markdown content — shared by the MCP vault-tool executor and the notes service's folder export/import/delete methods so the S3-vs-CouchDB-adapter decision lives in one place.
clients/vaultpg
Package vaultpg is the client for per-vault Postgres databases: building connection strings for a domain.PostgresInstance/vault database+role pair, running the admin-side DDL that provisions a vault's role+database (AdminClient), and caching the tenant-side *sql.DB connections the MCP executor queries through (ConnPool).
Package vaultpg is the client for per-vault Postgres databases: building connection strings for a domain.PostgresInstance/vault database+role pair, running the admin-side DDL that provisions a vault's role+database (AdminClient), and caching the tenant-side *sql.DB connections the MCP executor queries through (ConnPool).
clients/workbenchdocker
Package workbenchdocker is a thin typed wrapper around the Docker Engine SDK (github.com/docker/docker/client), used to create/start/stop/remove the containers and volumes that back a single workbench (a per-user sandbox running two independent ways to drive the `claude` CLI: the in-container chat bridge, deploy/workbench/bridge, which drives it one turn at a time, and a tmux session (see tmux_tabs.go) exposing a real interactive `claude` TUI per tab through ttyd).
Package workbenchdocker is a thin typed wrapper around the Docker Engine SDK (github.com/docker/docker/client), used to create/start/stop/remove the containers and volumes that back a single workbench (a per-user sandbox running two independent ways to drive the `claude` CLI: the in-container chat bridge, deploy/workbench/bridge, which drives it one turn at a time, and a tmux session (see tmux_tabs.go) exposing a real interactive `claude` TUI per tab through ttyd).
config
Package config loads and parses the application's runtime configuration.
Package config loads and parses the application's runtime configuration.
middleware/requesthost
Package requesthost threads the public-facing host of an inbound HTTP request from the transport layer into the service layer, mirroring the user_context package's pattern.
Package requesthost threads the public-facing host of an inbound HTTP request from the transport layer into the service layer, mirroring the user_context package's pattern.
repository/pg/repos/dockerhosts
Package dockerhosts is the pure-DB layer for the admin-managed pool of Docker daemons backing per-vault workbench containers.
Package dockerhosts is the pure-DB layer for the admin-managed pool of Docker daemons backing per-vault workbench containers.
repository/pg/repos/triggerpresets
Package triggerpresets is the pure-DB read layer for the trigger_presets catalog table (see migration 038_trigger_presets_and_links.sql) — the webhook trigger presets shown in the "Add trigger" picker (gitlab_push, generic, ...), replacing the hardcoded Go slice that used to live in internal/service/v1/tract.
Package triggerpresets is the pure-DB read layer for the trigger_presets catalog table (see migration 038_trigger_presets_and_links.sql) — the webhook trigger presets shown in the "Add trigger" picker (gitlab_push, generic, ...), replacing the hardcoded Go slice that used to live in internal/service/v1/tract.
service/v1/adminsettings
Package adminsettings implements AdminSystemSettingsService — an administrator's view over the same single-row global instance configuration the first-run setup wizard (internal/service/v1/setupwizard) edits pre-setup, exposed post-setup for an admin to revisit.
Package adminsettings implements AdminSystemSettingsService — an administrator's view over the same single-row global instance configuration the first-run setup wizard (internal/service/v1/setupwizard) edits pre-setup, exposed post-setup for an admin to revisit.
service/v1/dockerhosts
Package dockerhosts implements service.DockerHostService: admin CRUD over the pool of Docker daemons that back per-vault workbench containers.
Package dockerhosts implements service.DockerHostService: admin CRUD over the pool of Docker daemons that back per-vault workbench containers.
service/v1/postgresinstances
Package postgresinstances is the admin CRUD service for the shared pool of Postgres servers (admin pool or BYOK) that per-vault databases are provisioned on — mirrors internal/service/v1/s3instances.
Package postgresinstances is the admin CRUD service for the shared pool of Postgres servers (admin pool or BYOK) that per-vault databases are provisioned on — mirrors internal/service/v1/s3instances.
service/v1/public_docs
Package public_docs implements the anonymous, auth-exempt read surface backing PublicDocsAPI (see internal/api/server/artel_api/public_docs_grpc.pb.go's doc comment and docs/architecture.md).
Package public_docs implements the anonymous, auth-exempt read surface backing PublicDocsAPI (see internal/api/server/artel_api/public_docs_grpc.pb.go's doc comment and docs/architecture.md).
service/v1/public_docs/githubdocs
Package githubdocs serves the built-in "Artel Quick Start" docs tree straight from this repo's own public GitHub remote (docs/public/ on the master branch), so a fresh Artel instance has something real to point an anonymous /docs visitor at before any CouchDB vault has been published.
Package githubdocs serves the built-in "Artel Quick Start" docs tree straight from this repo's own public GitHub remote (docs/public/ on the master branch), so a fresh Artel instance has something real to point an anonymous /docs visitor at before any CouchDB vault has been published.
service/v1/setupwizard
Package setupwizard implements the first-run setup wizard — see internal/service/interfaces.go's SetupWizardService doc comment for the flow this drives.
Package setupwizard implements the first-run setup wizard — see internal/service/interfaces.go's SetupWizardService doc comment for the flow this drives.
service/v1/simplechat
Package simplechat implements service.SimpleChatService: the in-process, container-free "Simple Chat" agent.
Package simplechat implements service.SimpleChatService: the in-process, container-free "Simple Chat" agent.
service/v1/tasktracker
Package tasktracker backs the TaskTrackersAPI wire contract (unchanged) on top of the generic external_connections + MoM path instead of a dedicated task_trackers table/client.
Package tasktracker backs the TaskTrackersAPI wire contract (unchanged) on top of the generic external_connections + MoM path instead of a dedicated task_trackers table/client.
service/v1/tract/script
Package script is the pluggable execution backend for Tract "script" steps.
Package script is the pluggable execution backend for Tract "script" steps.
service/v1/workbench
Package workbench implements service.WorkbenchService: it manages the per-(vault, user) Docker container backing a vault member's cloud workbench — every vault member gets their own workbench, tracked through domain.WorkbenchStatus's state machine, provisioned via internal/clients/workbenchdocker's Docker client.
Package workbench implements service.WorkbenchService: it manages the per-(vault, user) Docker container backing a vault member's cloud workbench — every vault member gets their own workbench, tracked through domain.WorkbenchStatus's state machine, provisioned via internal/clients/workbenchdocker's Docker client.
terminalauth
Package terminalauth scans a workbench's raw ttyd terminal output for the Claude CLI's OAuth sign-in link, the same one deploy/workbench/bridge/internal/authlogin.Parser looks for on the chat bridge's transport — but the interactive terminal (internal/transport/vaults_api's WorkbenchTerminalShellHandler, proxying ttyd's own binary WebSocket protocol) is a separate transport with no visibility into the bridge's parser, so it needs its own tap.
Package terminalauth scans a workbench's raw ttyd terminal output for the Claude CLI's OAuth sign-in link, the same one deploy/workbench/bridge/internal/authlogin.Parser looks for on the chat bridge's transport — but the interactive terminal (internal/transport/vaults_api's WorkbenchTerminalShellHandler, proxying ttyd's own binary WebSocket protocol) is a separate transport with no visibility into the bridge's parser, so it needs its own tap.
transport/simple_chat_api
Package simple_chat_api exposes Simple Chat over the network: the CRUD RPCs of artel_api.SimpleChatAPI here, and the live turn WebSocket in chat_ws.go.
Package simple_chat_api exposes Simple Chat over the network: the CRUD RPCs of artel_api.SimpleChatAPI here, and the live turn WebSocket in chat_ws.go.
transport/telegram_webhook
Package telegram_webhook implements the inbound half of Artel's BYO-bot Telegram integration: receiving updates from Telegram for a bot the user linked via externalconnections.Service.AddTelegramConnection, and relaying them into that user's workbench chat session (a headless Claude Code session running in a Docker container, exposed as a WebSocket speaking internal/chatprotocol's normalized JSON event protocol).
Package telegram_webhook implements the inbound half of Artel's BYO-bot Telegram integration: receiving updates from Telegram for a bot the user linked via externalconnections.Service.AddTelegramConnection, and relaying them into that user's workbench chat session (a headless Claude Code session running in a Docker container, exposed as a WebSocket speaking internal/chatprotocol's normalized JSON event protocol).
pkg
app
Package app is the public entry point for embedding artel as a library.
Package app is the public entry point for embedding artel as a library.
momhttp
Package momhttp is the public surface for injecting per-mcp / per-tool HTTP middleware into artel's MoM http executor from outside the module.
Package momhttp is the public surface for injecting per-mcp / per-tool HTTP middleware into artel's MoM http executor from outside the module.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL