Skip to content

[1/5] feat(intelligence): surface own tiny.place identity + relay in Orchestration tab#4588

Merged
senamakel merged 11 commits into
tinyhumansai:mainfrom
oxoxDev:design/harness-ui
Jul 6, 2026
Merged

[1/5] feat(intelligence): surface own tiny.place identity + relay in Orchestration tab#4588
senamakel merged 11 commits into
tinyhumansai:mainfrom
oxoxDev:design/harness-ui

Conversation

@oxoxDev

@oxoxDev oxoxDev commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds two renderer-only orchestration controllers — orchestration_self_identity and orchestration_relay_info — surfacing OpenHuman's own tiny.place identity and the active relay in the Brain → Orchestration → TinyPlace tab.
  • New SelfIdentityCard: shows this agent's @handle / address (with copy) plus its discoverability — whether its directory card and Signal encryption key are published, and therefore whether peers can DM it — with a register hint when it is un-messageable.
  • New RelayBadge: an always-visible STAGING / PRODUCTION pill for the relay the core is talking to.
  • First slice of a larger redesign turning this tab from a chat relay into a hub for running many external agent instances.

Problem

The tab shows peers/contacts but never OpenHuman's own tiny.place agent id, so there is no way to hand a peer your address to be messaged inbound. Worse, a freshly-provisioned identity can accept contacts yet still be un-messageable: it only publishes its Signal key bundle / directory card during @handle registration, so every DM to it 404s on /directory/agents/<addr> until then — with nothing on screen explaining why.

Separately, the relay endpoint (staging vs prod) was invisible. A mismatch — one side on staging-api.tiny.place, the core defaulted to prod api.tiny.place — produced a silent 404 with no on-screen signal of which relay either side used.

Solution

  • orchestration_self_identity composes the existing internal tiny.place reads (signal_key_status + directory_reverse(self) + directory_get_agent(self)) into { agentId, handles, primaryHandle?, cardPublished, keyPublished, discoverable }. discoverable = cardPublished && keyPublished — the bottom line the card renders. Parsing/composition is split into a pure build_self_identity fn so it is unit-tested without a live wallet.
  • orchestration_relay_info returns { baseUrl, network } from the configured relay base URL (staging when the host carries a staging marker, else prod), via a pure, unit-tested relay_network_label.
  • Both are registered in the existing internal-only controller list; no new agent-facing tools.
  • Frontend: typed orchestrationClient.selfIdentity() / relayInfo(), two presentational components with co-located tests, wired into the tab header/roster best-effort (a failed read hides the card/badge rather than breaking the chat surface). Full i18n across en + 13 locales.

Submission Checklist

  • Tests added or updated (happy path + at least one failure / edge case) — rust: build_self_identity (published / primary-fallback / undiscoverable) + relay_network_label; frontend: RelayBadge (3), SelfIdentityCard (6, incl. loading/undiscoverable/copy), tab suite extended.
  • Diff coverage ≥ 80% — CI's Rust Core Coverage + Frontend Checks coverage jobs pass on this PR; the pure build_self_identity/relay_network_label helpers and all components are directly unit-tested.
  • N/A (Coverage matrix updated): additive UI/telemetry surface — no matrix feature row.
  • N/A (affected feature IDs in ## Related): none — no matrix IDs.
  • No new external network dependencies introduced — reuses existing tiny.place client seams.
  • N/A (Manual smoke checklist): does not touch release-cut smoke surfaces.
  • N/A (Linked issue Closes #NNN): design-driven, no tracking issue.

Impact

  • Desktop only. Additive: two internal RPCs + two presentational components + i18n keys; no schema/migration changes, no behavior change to existing chat/pairing flows.
  • Security: no secrets surfaced — the card shows only the public agent id / @Handles; no private key or seed crosses the RPC boundary.

Related

  • Closes: N/A
  • Follow-up PR(s)/TODOs: instance model + roster, attention queue, layout rewrite, external launch/control (staged follow-ups in the same redesign program).

AI Authored PR Metadata (required for Codex/Linear PRs)

Linear Issue

  • Key: N/A
  • URL: N/A

Commit & Branch

  • Branch: design/harness-ui
  • Commit SHA: see PR head

Validation Run

  • pnpm --filter openhuman-app format:check
  • pnpm typecheck
  • Focused tests: vitest run RelayBadge / SelfIdentityCard / TinyPlaceOrchestrationTab (21 passed); cargo test --lib openhuman::orchestration::schemas / openhuman::tinyplace::ops
  • Rust fmt/check (if changed): cargo fmt --check, cargo check, cargo clippy --lib
  • N/A (Tauri fmt/check): no app/src-tauri changes

Validation Blocked

  • command: N/A
  • error: N/A
  • impact: N/A

Behavior Changes

  • Intended behavior change: surface own identity + relay; no change to existing flows.
  • User-visible effect: SelfIdentityCard + RelayBadge appear in the TinyPlace tab.

Parity Contract

  • Legacy behavior preserved: existing sessions/pairing/message surfaces unchanged; new reads are additive and best-effort.
  • Guard/fallback/dispatch parity checks: identity/relay read failures are swallowed and hide the UI, never error the tab.

Duplicate / Superseded PR Handling

  • Duplicate PR(s): none
  • Canonical PR: this
  • Resolution: N/A

Summary by CodeRabbit

  • New Features
    • Added a self-identity card to the orchestration view with handle/agent ID details, discoverability and publication badges, and copy-to-clipboard feedback.
    • Added a relay badge in the sidebar header showing relay environment (staging/production) and base URL.
    • Added localization strings for relay and identity card states across supported languages.
  • Bug Fixes
    • Improved orchestration loading to fetch relay and identity together and handle partial failures without breaking existing UI.
  • Tests
    • Added UI tests covering relay badge rendering and self-identity card behaviors, including copy and undiscoverable scenarios.

oxoxDev added 7 commits July 6, 2026 21:44
Re-export handle_tinyplace_signal_key_status / directory_reverse /
directory_get_agent from the tinyplace mod so the orchestration layer can
compose them, and add ops::relay_endpoint() (+ pure relay_network_label,
unit-tested) exposing the configured relay base URL and a staging|prod label.
Two renderer-only controllers: orchestration_self_identity composes the
tinyplace signal/directory reads into { agentId, handles, primaryHandle,
cardPublished, keyPublished, discoverable } — surfacing whether peers can DM
this agent (a fresh identity accepts contacts yet stays un-messageable until it
registers a @handle, which is what publishes its card + key). orchestration_relay_info
returns { baseUrl, network }. Composition is split into a pure build_self_identity
fn with unit tests. Both auto-register via all_registered_controllers.
Typed renderer wrappers over openhuman.orchestration_self_identity /
_relay_info, with SelfIdentity/SelfHandle/RelayInfo response types.
Always-visible STAGING/PRODUCTION pill for the active tiny.place relay, so a
relay mismatch (the silent prod-vs-staging 404 hit during live debugging) is
obvious instead of opaque. Presentational; parent supplies RelayInfo.
Pinned card showing OpenHuman's own tiny.place @handle/address (with copy) plus
its discoverability — directory-card + encryption-key published state and whether
peers can DM it — with a register hint when un-messageable. Presentational.
Fetch selfIdentity + relayInfo (best-effort, non-blocking) and render the
RelayBadge in the header and SelfIdentityCard atop the roster; refresh reloads
both. Extends the tab test mocks/fixtures for the two new client methods.
13 keys (tinyplaceOrchestration.identity.* + .relay.*) with real translations
across en + 13 locales for the SelfIdentityCard and RelayBadge.
@oxoxDev oxoxDev requested a review from a team July 6, 2026 16:22
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Adds backend orchestration endpoints for self identity and relay info, exposes them through the orchestration client, renders relay and identity UI in the TinyPlace orchestration tab, and adds matching translation keys across supported locales.

Changes

Self identity and relay badge feature

Layer / File(s) Summary
Self-identity composition and relay helpers
src/openhuman/tinyplace/mod.rs, src/openhuman/tinyplace/ops.rs, src/openhuman/orchestration/ops.rs
Adds relay endpoint helpers, self-identity composition logic, and tests that cover relay labeling and identity selection/publication state.
Orchestration schemas and handlers
src/openhuman/orchestration/schemas.rs
Registers the new orchestration schema entries, defines the relay DTO, wires the self-identity and relay handlers, and updates schema tests.
Orchestration client types and methods
app/src/lib/orchestration/orchestrationClient.ts
Adds SelfHandle, SelfIdentity, and RelayInfo types plus selfIdentity() and relayInfo() client methods.
Relay and identity cards
app/src/components/intelligence/RelayBadge.tsx, app/src/components/intelligence/RelayBadge.test.tsx, app/src/components/intelligence/SelfIdentityCard.tsx, app/src/components/intelligence/SelfIdentityCard.test.tsx
Adds the relay badge and self-identity card components, including copy behavior, discoverability and publication status rendering, and their tests.
TinyPlace orchestration tab wiring
app/src/components/intelligence/TinyPlaceOrchestrationTab.tsx, app/src/components/intelligence/TinyPlaceOrchestrationTab.test.tsx
Fetches self identity and relay info in the tab, stores them in state, refreshes them on mount and refresh actions, and renders the new sidebar components; tests cover the new loading and failure path.
Translations for relay and identity strings
app/src/lib/i18n/*.ts
Adds relay environment and identity status translation keys across the supported locale files.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant TinyPlaceOrchestrationTab
  participant orchestrationClient
  participant schemas
  participant tinyplace ops
  participant orchestration ops

  TinyPlaceOrchestrationTab->>orchestrationClient: selfIdentity() and relayInfo()
  orchestrationClient->>schemas: JSON-RPC requests
  schemas->>tinyplace ops: relay_endpoint()
  schemas->>orchestration ops: build_self_identity(...)
  schemas-->>orchestrationClient: RelayInfo / SelfIdentity
  orchestrationClient-->>TinyPlaceOrchestrationTab: resolved data
Loading

Possibly related PRs

  • tinyhumansai/openhuman#4400: Extends the same TinyPlaceOrchestrationTab.tsx surface with additional orchestration UI state and rendering.
  • tinyhumansai/openhuman#4430: Modifies the same TinyPlace orchestration tab and its tests, overlapping with the new relay and identity wiring.
  • tinyhumansai/openhuman#4564: Touches the backend self-identity signal-key path that feeds the new orchestration self-identity response.

Suggested labels: feature, rust-core, agent

Suggested reviewers: M3gA-Mind, graycyrus

Poem

A rabbit hopped through relay light,
And found a handle shining bright.
With copied hops and badges new,
The tiny tab now greets you too.
🐇✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: surfacing the agent's tiny.place identity and relay in the Orchestration tab.

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 616def8b36

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread app/src/components/intelligence/TinyPlaceOrchestrationTab.tsx Outdated
@coderabbitai coderabbitai Bot added agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. feature Net-new user-facing capability or product behavior. labels Jul 6, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
src/openhuman/orchestration/schemas.rs (1)

635-686: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

build_self_identity business logic lives in schemas.rs instead of ops.rs.

As per coding guidelines, src/openhuman/**/{types,store,ops,schemas,tools,bus}.rs should follow the shape: "ops.rs for business logic and RpcOutcome<T> handlers, schemas.rs for RPC-facing schemas and delegating handlers." build_self_identity performs non-trivial composition/parsing logic (handle parsing, primary-handle selection, discoverability derivation) and would fit better as an ops.rs function that handle_self_identity merely delegates to.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/openhuman/orchestration/schemas.rs` around lines 635 - 686, The
`build_self_identity` function currently contains business logic in
`schemas.rs`, but it should live in `ops.rs` per the module split. Move the
non-trivial parsing/composition logic (handle extraction, primary-handle
fallback, and discoverable derivation) into an `ops.rs` helper, and keep
`handle_self_identity` in `schemas.rs` as a thin delegator that calls that
helper. Make sure the new `ops.rs` function uses the same
`build_self_identity`-style behavior so existing `SelfIdentity`, `HandleEntry`,
and `handle_self_identity` call sites continue to work unchanged.

Source: Path instructions

app/src/components/intelligence/SelfIdentityCard.tsx (1)

61-61: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Fallback ignores the primary flag on SelfHandle.

When primaryHandle is unset, this falls back to handles[0] rather than the handle actually flagged primary. If the backend doesn't guarantee the primary handle is always first in the array, the wrong @handle could be displayed.

♻️ Proposed fix
-  const primaryHandle = identity.primaryHandle ?? identity.handles[0]?.username;
+  const primaryHandle =
+    identity.primaryHandle ??
+    identity.handles.find(h => h.primary)?.username ??
+    identity.handles[0]?.username;

Please confirm whether handles from orchestration_self_identity is always primary-first, or if this fallback should defensively check the primary flag.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/components/intelligence/SelfIdentityCard.tsx` at line 61, The
fallback in SelfIdentityCard’s primaryHandle logic ignores the SelfHandle
primary flag and may show the wrong `@handle`. Update the primaryHandle selection
so it first uses identity.primaryHandle, then defensively searches
identity.handles for the handle marked primary before falling back to the first
username, using the existing SelfIdentityCard render logic and SelfHandle shape.
app/src/components/intelligence/TinyPlaceOrchestrationTab.tsx (1)

273-298: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Promise.all couples identity and relay failures.

selfIdentity() and relayInfo() are independent, best-effort reads per the surrounding comments, but Promise.all means a failure in either call discards the successful result of the other — e.g. an offline relay would also hide a successfully-fetched self-identity card.

♻️ Proposed fix using Promise.allSettled for independent degradation
   const loadIdentity = useCallback(async () => {
     debug('[tinyplace-orchestration] identity load entry');
-    try {
-      const [identity, relay] = await Promise.all([
-        orchestrationClient.selfIdentity(),
-        orchestrationClient.relayInfo(),
-      ]);
-      if (!mountedRef.current) return;
-      debug(
-        '[tinyplace-orchestration] identity load exit discoverable=%s network=%s',
-        identity.discoverable,
-        relay.network
-      );
-      setSelfIdentity(identity);
-      setRelayInfo(relay);
-    } catch (error) {
-      if (!mountedRef.current) return;
-      // Identity/relay are informational; a read failure (locked wallet, offline
-      // relay) must not break the chat surface. Leave the card/badge hidden.
-      const message = error instanceof Error ? error.message : String(error);
-      debug('[tinyplace-orchestration] identity load error %s', message);
-    } finally {
-      if (mountedRef.current) setIdentityLoading(false);
-    }
+    const [identityResult, relayResult] = await Promise.allSettled([
+      orchestrationClient.selfIdentity(),
+      orchestrationClient.relayInfo(),
+    ]);
+    if (!mountedRef.current) return;
+    if (identityResult.status === 'fulfilled') {
+      setSelfIdentity(identityResult.value);
+    } else {
+      debug('[tinyplace-orchestration] identity load error %s', identityResult.reason);
+    }
+    if (relayResult.status === 'fulfilled') {
+      setRelayInfo(relayResult.value);
+    } else {
+      debug('[tinyplace-orchestration] relay load error %s', relayResult.reason);
+    }
+    setIdentityLoading(false);
   }, []);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/components/intelligence/TinyPlaceOrchestrationTab.tsx` around lines
273 - 298, In loadIdentity within TinyPlaceOrchestrationTab, selfIdentity() and
relayInfo() should be treated as independent best-effort reads instead of being
coupled by Promise.all. Update the orchestrationClient.selfIdentity and
orchestrationClient.relayInfo handling to use Promise.allSettled or separate
awaits so a failure in one does not discard the successful result of the other,
then only setSelfIdentity and setRelayInfo for the calls that succeeded while
keeping the existing mountedRef and loading-state behavior intact.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/src/lib/i18n/pl.ts`:
- Line 316: The Polish translation entry in the i18n map uses the incorrect form
"Nieopublikowano"; update the value for
tinyplaceOrchestration.identity.notPublished in pl.ts to the separated negation
"Nie opublikowano" so it matches the style used by the nearby published string
and the rest of the translation set.

---

Nitpick comments:
In `@app/src/components/intelligence/SelfIdentityCard.tsx`:
- Line 61: The fallback in SelfIdentityCard’s primaryHandle logic ignores the
SelfHandle primary flag and may show the wrong `@handle`. Update the primaryHandle
selection so it first uses identity.primaryHandle, then defensively searches
identity.handles for the handle marked primary before falling back to the first
username, using the existing SelfIdentityCard render logic and SelfHandle shape.

In `@app/src/components/intelligence/TinyPlaceOrchestrationTab.tsx`:
- Around line 273-298: In loadIdentity within TinyPlaceOrchestrationTab,
selfIdentity() and relayInfo() should be treated as independent best-effort
reads instead of being coupled by Promise.all. Update the
orchestrationClient.selfIdentity and orchestrationClient.relayInfo handling to
use Promise.allSettled or separate awaits so a failure in one does not discard
the successful result of the other, then only setSelfIdentity and setRelayInfo
for the calls that succeeded while keeping the existing mountedRef and
loading-state behavior intact.

In `@src/openhuman/orchestration/schemas.rs`:
- Around line 635-686: The `build_self_identity` function currently contains
business logic in `schemas.rs`, but it should live in `ops.rs` per the module
split. Move the non-trivial parsing/composition logic (handle extraction,
primary-handle fallback, and discoverable derivation) into an `ops.rs` helper,
and keep `handle_self_identity` in `schemas.rs` as a thin delegator that calls
that helper. Make sure the new `ops.rs` function uses the same
`build_self_identity`-style behavior so existing `SelfIdentity`, `HandleEntry`,
and `handle_self_identity` call sites continue to work unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9ff0a351-c44e-4569-a3ea-cc61400bd865

📥 Commits

Reviewing files that changed from the base of the PR and between 057c3ff and 616def8.

📒 Files selected for processing (24)
  • app/src/components/intelligence/RelayBadge.test.tsx
  • app/src/components/intelligence/RelayBadge.tsx
  • app/src/components/intelligence/SelfIdentityCard.test.tsx
  • app/src/components/intelligence/SelfIdentityCard.tsx
  • app/src/components/intelligence/TinyPlaceOrchestrationTab.test.tsx
  • app/src/components/intelligence/TinyPlaceOrchestrationTab.tsx
  • app/src/lib/i18n/ar.ts
  • app/src/lib/i18n/bn.ts
  • app/src/lib/i18n/de.ts
  • app/src/lib/i18n/en.ts
  • app/src/lib/i18n/es.ts
  • app/src/lib/i18n/fr.ts
  • app/src/lib/i18n/hi.ts
  • app/src/lib/i18n/id.ts
  • app/src/lib/i18n/it.ts
  • app/src/lib/i18n/ko.ts
  • app/src/lib/i18n/pl.ts
  • app/src/lib/i18n/pt.ts
  • app/src/lib/i18n/ru.ts
  • app/src/lib/i18n/zh-CN.ts
  • app/src/lib/orchestration/orchestrationClient.ts
  • src/openhuman/orchestration/schemas.rs
  • src/openhuman/tinyplace/mod.rs
  • src/openhuman/tinyplace/ops.rs

Comment thread app/src/lib/i18n/pl.ts Outdated
Business logic (identity composition + its SelfIdentity/HandleEntry DTOs) belongs
in ops.rs per the domain module conventions; schemas.rs keeps only the RPC
handler, which now delegates. Tests move with the fn. No behavior change.
@oxoxDev

oxoxDev commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator Author

Addressed the ops.rs point in 23ad2d7 — moved build_self_identity (plus its SelfIdentity/HandleEntry DTOs and the three unit tests) into orchestration/ops.rs; schemas.rs now keeps only the delegating RPC handler. No behavior change.

@coderabbitai coderabbitai Bot added the rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. label Jul 6, 2026
oxoxDev added 2 commits July 6, 2026 22:54
selfIdentity() builds the tiny.place client from the wallet and can
reject on a locked/unconfigured wallet; relayInfo() only reads the
configured base URL. Promise.all discarded the relay result on identity
failure, hiding the relay badge even though it is wallet-independent.
Settle the two reads independently so a relay mismatch stays visible
regardless of identity discovery. Adds a regression test.
Polish negates the impersonal verb form as a separate word: 'nie
opublikowano', not the prefixed 'Nieopublikowano'.
@coderabbitai coderabbitai Bot removed agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. labels Jul 6, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 6, 2026
# Conflicts:
#	app/src/lib/i18n/ar.ts
#	app/src/lib/i18n/bn.ts
#	app/src/lib/i18n/de.ts
#	app/src/lib/i18n/en.ts
#	app/src/lib/i18n/es.ts
#	app/src/lib/i18n/fr.ts
#	app/src/lib/i18n/hi.ts
#	app/src/lib/i18n/id.ts
#	app/src/lib/i18n/it.ts
#	app/src/lib/i18n/ko.ts
#	app/src/lib/i18n/pl.ts
#	app/src/lib/i18n/pt.ts
#	app/src/lib/i18n/ru.ts
#	app/src/lib/i18n/zh-CN.ts
@oxoxDev oxoxDev changed the title feat(intelligence): surface own tiny.place identity + relay in Orchestration tab [1/5] feat(intelligence): surface own tiny.place identity + relay in Orchestration tab Jul 6, 2026
@coderabbitai coderabbitai Bot added agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. labels Jul 6, 2026
@senamakel senamakel merged commit 05a3c97 into tinyhumansai:main Jul 6, 2026
23 of 27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. feature Net-new user-facing capability or product behavior. rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants