Skip to content

chagel/metis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

287 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Metis

CI License: MIT PRs Welcome

Self-host a team of AI agents that don't just chat — they work: in a sandbox, on your stack, with your own LLM provider.

Metis is an open, self-hostable agent platform. It puts a live, streaming web chat in front of a real agent that ships shell and coding tools and reaches your systems through connectors — running sandboxed, multi-user, on the provider you choose. Coding is one capability, not the boundary.

Metis chat UI

Why Metis

  • Agents that act, not just answer. The agent has a shell, file tools, and connectors (GitHub, Google, Linear, Metabase, …). It reads, runs, edits, and hands back artifacts — sandboxed by default. Not a chat box bolted to an API.
  • Multi-user from day one. Every resource belongs to a team, and the agent acts as the right person against the right systems — credentials held per team and per member. A personal account is just a team of one.
  • Your provider, your infrastructure. Anthropic, OpenAI, Google, or whatever comes next, picked per conversation. No Metis-hosted inference, no per-user key vault — you self-host the whole thing.
  • Build your own tools, and share them. Personal productivity is the floor, not the ceiling: author skills in the UI (or have the agent write them) and share them across your devices and your team.

What people do with it

Real work from its daily deployment — one platform, every role (see Proven shape):

  • Engineering — review a PR and surface the landmines green tests sail past: a migration that locks existing users out, a hardcoded SMTP credential, a guest fee that never made it into the order total. Judged against the design intent, then filed as a Linear ticket.
  • Operations — run the rental operation across countries: ota cancellations and calendar sync, pricing schedules, listing titles, utilities and tax entry.
  • Customer service — draft returning-customer discount emails, chase a booking price anomaly, check whether an inbound email is genuine.
  • Leadership — audit dashboard metric, pull kpi rankings, set up goals, prep the team-meeting agenda.
  • Anyone — drop in multi-medias via multiple channels and get it back analyzed with operational insights and suggestions; share the conversation with a teammate.

Proven shape

Metis didn't start from a blank page. Its sibling, Themis, runs daily across engineering, operations, customer service, and leadership at a company managing 1,000+ properties — reviewing PRs, filing tickets, auditing dashboards, and running the rental operation in three languages. The kind of internal platform people stop noticing because it has folded into how they work. Themis is Claude-only (built on the Claude Agent SDK); Metis is the open, provider-agnostic form of the same shape, built on pi, a fast, open agent harness. The lessons come along; the lock-in does not.

pi runs on your laptop. Metis runs pi for everyone you work with — in a sandbox, on your stack, with your provider.

Stack

  • Rails 8.1, Ruby 4.0.5, PostgreSQL
  • pi agent harness, driven via the pi-agent-rb gem
  • Any LLM provider pi supports, chosen per conversation
  • Hotwire (Turbo + Stimulus, importmap) and Tailwind for the live chat UI
  • Devise for auth; Solid Queue / Cache / Cable for jobs, cache, and Action Cable

Quickstart

First, copy the env template and set at least one provider key (e.g. ANTHROPIC_API_KEY) so the agent can talk to a model — both setups below load .env:

cp .env.example .env   # then edit it: set ANTHROPIC_API_KEY (or another provider)

Then pick native or Docker; either serves the app at http://localhost:3000.

Native

Run the app directly on your machine. Prerequisites: Ruby 4.0.5 (see .ruby-version; mise recommended), PostgreSQL, and pi on your PATH for the default local runtime (npm install -g @earendil-works/pi-coding-agent).

bin/setup        # install deps, prepare the database, install the MCP bridge into pi
bin/dev          # Puma + Tailwind via foreman → http://localhost:3000

Docker

Nothing local to install but Docker — compose.yaml bakes Ruby, pi, the MCP bridge, and the gws CLI into the dev image, runs Postgres alongside, and serves the agent on the local runtime inside the container.

docker compose up --build   # first run, or after a Gemfile change
docker compose up           # subsequent runs

Either way, see docs/configuration.md for runtimes, providers, and every variable.

Metis encrypts Message#content and Message#reasoning with Active Record Encryption; the keys must be present in Rails credentials for every environment, tests included.

Development

bin/rails test   # full Minitest suite
bin/rubocop      # lint (rubocop-rails-omakase)
bin/ci           # rubocop, security scans, and tests

See docs/architecture.md and CLAUDE.md for architecture and conventions.

About

Pi harness + web for your team

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors