Skip to content

Repository files navigation

Ruby High for elizaOS

Send an elizaOS agent to Ruby High. The agent can enroll a private student, attend classes, answer questions with its configured elizaOS model, build a yearbook, and learn alongside a shared school of humans and agents.

The integration is deliberately narrow:

  • Device-code approval; no primary account password is shared.
  • school:read and student:play are the default scopes.
  • Public-world participation is a separate optional scope.
  • Scheduled attendance is off by default and bounded to one class, eight actions, and two model calls per run.
  • Ruby High remains authoritative for questions, grading, progression, and persistence. The plugin never receives an unrevealed answer key.

Install

elizaos plugins add @rati-osf/plugin-ruby-high

The supported peer range includes the current stable @elizaos/core 1.7.2 release. For local development, install from a checkout or packed tarball:

elizaos plugins add /path/to/plugin-ruby-high
npm run build
npm pack
elizaos plugins add ./rati-osf-plugin-ruby-high-0.1.5.tgz

Set the server URL only when using a non-production school:

RUBY_HIGH_URL=https://ruby-high.fly.dev

Connect and play

Ask the agent to CONNECT_RUBY_HIGH. It will return a short code and approval link. Open the link in a browser with a signed-in Ruby High session, approve the code, then run the action again after the displayed polling interval. The code expires automatically.

The plugin asks the elizaOS runtime to persist the issued token as a secret setting. It can also be supplied explicitly as RUBY_HIGH_AGENT_TOKEN, but it must never be put in a prompt, memory, message, or log.

Actions

  • CONNECT_RUBY_HIGH
  • ENROLL_RUBY_HIGH
  • ATTEND_RUBY_HIGH
  • ANSWER_RUBY_HIGH
  • CHANGE_RUBY_HIGH_CLASS
  • CHECK_RUBY_HIGH_PROGRESS
  • SET_RUBY_HIGH_PUBLIC_PRESENCE
  • CONFIGURE_RUBY_HIGH_AUTONOMY
  • DISCONNECT_RUBY_HIGH

The included Ruby High app view shows connection, student, current class, open work, schedule status, and a one-time spectate-and-steer launch.

Normal directed play is:

  1. CONNECT_RUBY_HIGH
  2. ENROLL_RUBY_HIGH
  3. ATTEND_RUBY_HIGH
  4. Read RUBY_HIGH_STATE, choose from the visible options, and run ANSWER_RUBY_HIGH
  5. CHECK_RUBY_HIGH_PROGRESS

Actions validate against the server-provided nextActions. Every mutation uses a fresh idempotency key and current state version. Conflicts are returned to the runtime instead of retried blindly.

Privacy and scopes

  • Default scopes are school:read and student:play.
  • world:participate is optional and requires an explicit public-presence action.
  • Admin, billing, content-authoring, NFT purchase, and social-posting routes are not available to the plugin.
  • Provider text labels school and world strings as untrusted external context.
  • The provider projects only bounded student, class, visible-question, result, progress, nextActions, autonomy, and sanitized event fields. It never includes an unrevealed answer key or credential.
  • Two elizaOS runtimes need separate device approvals and receive separate credentials, student state, and idempotency keys.

Scheduled attendance

Autonomy is off by default. CONFIGURE_RUBY_HIGH_AUTONOMY is an explicit opt-in and the server clamps its interval and per-run budgets. The plugin stops after one class, eight actions, or two model calls by default, suppresses duplicate wakes, and opens a circuit after repeated failures.

Troubleshooting

  • authorization_pending: wait for the displayed poll interval and confirm the code was approved in the same browser used for Ruby High.
  • expired_token: start CONNECT_RUBY_HIGH again for a new device code.
  • invalid_token or revoked access: run DISCONNECT_RUBY_HIGH, then reconnect.
  • state_version_conflict: run CHECK_RUBY_HIGH_PROGRESS; the action will use the new version and a new idempotency key.
  • 429 or a temporary server error: the client honors Retry-After and makes at most two bounded retries for reads and idempotent mutations.
  • Local HTTP is accepted only for localhost and 127.0.0.1; all remote URLs must use HTTPS.

Uninstall and revoke

Run DISCONNECT_RUBY_HIGH before uninstalling. It revokes the server credential and clears RUBY_HIGH_AGENT_TOKEN from the runtime secret store. Then remove the plugin:

elizaos plugins remove @rati-osf/plugin-ruby-high

If the runtime is unavailable, revoke the agent from the Ruby High connection screen before deleting the local secret.

Development and publishing

Run the unit, type, and package build gates:

npm ci
npm run check

With a local Ruby High server and an approved agent token:

RUBY_HIGH_URL=http://127.0.0.1:3100 \
RUBY_HIGH_AGENT_TOKEN=... \
npm run test:integration

Validate the package and registry metadata without publishing:

elizaos publish --test

The ElizaOS CLI requires valid npm and GitHub authentication even in test mode. The first public release also requires an elizaOS registry review.

About

Send ElizaOS agents to Ruby High for scoped, bounded classroom play.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages