t1385.11: Add Urbit communications subagent doc#2769
Conversation
Add .agents/services/communications/urbit.md covering Urbit OS personal server architecture, Ames P2P encrypted networking, Urbit ID (Azimuth) decentralized identity, Hoon/Nock programming basics, HTTP API (Eyre) for external integration, and current limitations (niche ecosystem, steep learning curve, limited bot tooling). Includes privacy/security assessment and aidevops integration patterns via HTTP API bridge.
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces a detailed guide for integrating Urbit as a communications subagent. It provides an in-depth look at Urbit's unique architecture, programming model, and identity system, aiming to equip users with the necessary knowledge for bot integration and understanding its capabilities and constraints within a decentralized context. Highlights
Changelog
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🔍 Code Quality Report�[0;35m[MONITOR]�[0m Code Review Monitoring Report �[0;34m[INFO]�[0m Latest Quality Status: �[0;34m[INFO]�[0m Recent monitoring activity: 📈 Current Quality Metrics
Generated on: Tue Mar 3 04:51:15 UTC 2026 Generated by AI DevOps Framework Code Review Monitoring |
|
There was a problem hiding this comment.
Code Review
This pull request adds a comprehensive documentation file for Urbit integration. The document is well-structured and covers the key aspects of Urbit, from its architecture to practical integration examples. I've identified a few areas for improvement, mainly concerning a recurring typo, an outdated repository link, use of a deprecated term, and a potentially confusing code example. Addressing these points will enhance the accuracy and clarity of this excellent guide.
Note: Security Review has been skipped due to the limited scope of the PR.
| - **Identity**: Azimuth (Ethereum L1 PKI) — hierarchical address space (~galaxy > ~star > ~planet > ~moon > ~comet) | ||
| - **HTTP API**: Eyre (HTTP server vane) — SSE for events, PUT/POST for actions (JSON via `mark` system) | ||
| - **Apps**: Groups (chat/forums), Notebook, Landscape (web UI), third-party apps via `desk` distribution | ||
| - **Repo**: [github.com/urbit/urbit](https://github.com/urbit/urbit) (runtime) | [github.com/urbit/vere](https://github.com/urbit/vere) (Vere) |
There was a problem hiding this comment.
The link to github.com/urbit/vere points to an archived repository. The Vere runtime code has been merged into the main urbit/urbit repository. To avoid confusion and pointing to outdated resources, it's better to remove the link to the archived vere repository.
| - **Repo**: [github.com/urbit/urbit](https://github.com/urbit/urbit) (runtime) | [github.com/urbit/vere](https://github.com/urbit/vere) (Vere) | |
| - **Repo**: [github.com/urbit/urbit](https://github.com/urbit/urbit) (runtime) |
|
|
||
| ```text | ||
| ┌─────────────────────────────────────────────────────┐ | ||
| │ Urbit Ship (~sampel-palnet) │ |
There was a problem hiding this comment.
There's a recurring typo throughout this document. ~sampel-palnet should be ~sampel-planet. This typo appears in many places, including code examples and diagrams, which could confuse readers. For example, it's present on lines 53, 139, 287, 296, 309, and many others. Please correct all instances of sampel-palnet to sampel-planet.
| │ Urbit Ship (~sampel-palnet) │ | |
| │ Urbit Ship (~sampel-planet) │ |
|
|
||
| 1. **Custom Gall agent** (Hoon) — full native integration but requires learning Hoon | ||
| 2. **HTTP API bridge** (any language) — connect via Eyre, but limited to what the HTTP API exposes | ||
| 3. **Airlock libraries** — `@urbit/http-api` (JS/TS), `urbit-api` (Python), `urbit-q` (Rust) — thin HTTP wrappers |
There was a problem hiding this comment.
The term 'Airlock' for the HTTP API client libraries is deprecated. The official JavaScript/TypeScript library was renamed from @urbit/airlock-http-api to @urbit/http-api. To use current terminology, please consider rephrasing this.
| 3. **Airlock libraries** — `@urbit/http-api` (JS/TS), `urbit-api` (Python), `urbit-q` (Rust) — thin HTTP wrappers | |
| 3. **HTTP API Client Libraries** — `@urbit/http-api` (JS/TS), `urbit-api` (Python), `urbit-q` (Rust) — thin HTTP wrappers |
| await api.poke({ | ||
| app: "channels", | ||
| mark: "channel-action", | ||
| json: buildReply(result), | ||
| }); |
There was a problem hiding this comment.
The TypeScript example for aidevops integration subscribes to the groups app, which is correct for modern Urbit. However, the poke action targets the channels app with a channel-action mark. This is a very low-level and potentially confusing way to send a message. A more idiomatic and robust approach would be to poke the group-push-hook agent with a group-update mark. This would make the example more consistent with modern Urbit development and easier for developers to follow. The buildReply function would need to be adjusted to create the correct JSON payload for this agent and mark.
| await api.poke({ | |
| app: "channels", | |
| mark: "channel-action", | |
| json: buildReply(result), | |
| }); | |
| await api.poke({ | |
| app: "group-push-hook", | |
| mark: "group-update", | |
| json: buildReply(result), // Note: The JSON from buildReply must match the 'group-update' structure. | |
| }); |
Accept worker versions for discord.md and msteams.md (already reviewed/merged). Keep our urbit.md (more detailed). Keep our AGENTS.md and subagent-index.toon (superset of all platforms).



Summary
.agents/services/communications/urbit.md— comprehensive subagent doc for Urbit bot integrationCloses #2758