Hi Anna team,
I recently reviewed the HOST API section of the Anna Developer Reference, mainly covering these pages and subpages:
agent.*chat.*llm.*image.*upload.*storage.*llm.embedfiles.*tools.*
During the review, I cross-checked the docs against my locally installed Anna CLI, @anna-ai/app-runtime, @anna-ai/app-schema, CLI templates, README files, and Anna App examples in the repository.
Overall, the Reference already covers much of the Host API surface, but I found several issues where pages appear outdated, use inconsistent naming, describe the permission model inaccurately, include misleading examples, or document response shapes that do not match current examples/SDK behavior.
Issues
-
Page: Reference — Anna Developer Hub
Issue: The page lists only 5 documented symbols, but the current Host API also exposesagent.session.listandagent.session.refresh.
Impact: Developers may think they cannot enumerate, recover, or refresh existing agent sessions. This can lead to duplicated sessions or poor handling of iframe reloads and long idle periods.
Suggestion: Update the count to 7 documented symbols and addagent.session.list,agent.session.refresh, and their recovery/refresh semantics. -
Page: Reference — Anna Developer Hub
Issue: The ACL description saysmanifest.permissionsmust declare"host.agent", which does not match the current CLI/example runtime ACL behavior.
Impact: Developers may incorrectly think rootpermissions[]controls Host API authorization and miss the actualui.host_api.agentgrant.
Suggestion: Explain that runtime ACL is controlled bymanifest.ui.host_api.agent.session. Ifpermissions[]is only for display/audit, document that separately. -
Page: Reference — Anna Developer Hub
Issue: The header version appears outdated:anna-app-runtime v0.2.0 / dispatcher 0.3.0.
Impact: Developers may misjudge the current Host API capability boundary, especially around recovery, refresh, and re-attaching sessions.
Suggestion: Update the card page version label and also document the relationship withlist/attach/refresh. -
Page: Reference — Anna Developer Hub
Issue: Thecreatereturn value omits lifecycle and tool-surface fields currently shown in runtime examples.
Impact: Developers may not know to read lifecycle fields orinherit_host_tools, making it harder to determine whether a session is near expiry or can actually use tools.
Suggestion: Addinherit_host_tools,expires_at,max_lifetime_at,idle_ttl_seconds, andsession_expires_in, with compatibility notes for older hosts. -
Page: Reference — Anna Developer Hub
Issue:granted_toolsis described as an “advisory list from manifest.ui.host_api.agent.tools”, which differs from current examples that emphasize a runtime-accurate tool surface.
Impact: Developers may treatgranted_toolsas just a UI hint and not as a closer-to-runtime indicator of actual tool availability.
Suggestion: Describegranted_tools/inherit_host_toolsas authoritative runtime hints for executable tool access, or at least more accurate than the static manifest alone. -
Page: Reference — Anna Developer Hub
Issue: The stream event names used in the example may be outdated.
Impact: Developers copying the example may not receive expected tokens or may missrun_metatool-authorization warnings.
Suggestion: Update the example event names and at least document recommended handling forrun_meta,token,complete, anderror. -
Page: Reference — Anna Developer Hub
Issue: Needs confirmation: thesystemparameter name may be outdated; local examples recommend per-runsystemPrompt.
Impact: Developers may pass the wrong field and the per-run system prompt may not take effect.
Suggestion: Confirm the current Host API field. IfsystemPromptis now recommended, rename the field or document it as an alias. -
Page: Reference — Anna Developer Hub
Issue: The return type is internally inconsistent. The Signature sayscontent: string, while Returns sayscontentmay be a structured list / opaque objects.
Impact: Frontend developers may hard-code string rendering and then crash or render incorrectly for multimodal messages.
Suggestion: Change the signature tocontent: string | unknown[] | unknown, or clearly document the current stable shape. -
Page: Reference — Anna Developer Hub
Issue: The page lists 3 documented symbols, but there are no clickable detail pages and no signatures, parameters, return values, errors, or authorization field documentation.
Impact: Developers cannot tell whetherwrite_messageshould receive{ role, content }or another shape, and cannot know the parameters/return structures forread_history/append_artifact.
Suggestion: Add signatures, parameters, return values, errors, and examples for the three methods. If detail pages are not ready, provide minimal usable call shapes on the current page. -
Page: Reference — Anna Developer Hub
Issue: The page does not explain that runtime authorization must enable specific methods throughmanifest.ui.host_api.chat.
Impact: Developers may only addchat.write_messageto rootpermissions, forgetui.host_api.chat, and hit runtime denied errors.
Suggestion: Add a manifest example such as"host_api": { "chat": ["write_message"] }, and explain thatread_history/append_artifactalso need to be explicitly listed. -
Page: Reference — Anna Developer Hub
Issue: The ACL description saysmanifest.permissionsmust declare"host.llm", which does not match the current CLI/example runtime ACL behavior.
Impact: Developers may incorrectly think rootpermissions[]controls LLM Host API authorization and miss the actualui.host_api.llmgrant.
Suggestion: Explain that runtime ACL is controlled bymanifest.ui.host_api.llm. Ifpermissions[]is only for display/audit, document that separately. -
Page: Reference — Anna Developer Hub
Issue: The header version appears outdated:anna-app-runtime v0.2.0 / dispatcher 0.3.0.
Impact: Developers may misjudge current runtime/dispatcher capabilities and error behavior.
Suggestion: Update the detail page version label to the current release chain, or remove version numbers that easily become stale. -
Page: Reference — Anna Developer Hub
Issue: The return signature marks_metaas always present, but local mocks/examples/SDK docs do not guarantee_meta.
Impact: Developers may directly readreply._meta.quotaConsumedand crash in mock mode, older hosts, or partial implementations.
Suggestion: Mark_metaas optional, recommend optional chaining, and specify which environments/versions guarantee it. -
Page: Reference — Anna Developer Hub
Issue: The App Host API permission section appears to describe Anna Appui.host_api.imageas rootmanifest.permissionsentries"llm.image"/"llm.image.edit".
Impact: Developers may configure rootpermissionsas shown but still not get access toanna.image.*.
Suggestion: Change it tomanifest.ui.host_api.image: ["generate", "edit"]. If Executa capabilities are relevant, documenthost_capabilities: ["llm.image", "llm.image.edit"]separately. -
Page: Reference — Anna Developer Hub; Reference — Anna Developer Hub
Issue: The subpages are labeledANNA-APP-RUNTIME V0.4, which does not match the locally installed runtime version.
Impact: Developers may think the current Host API is still at runtime v0.4.
Suggestion: Update to the current runtime version, or write it as “introduced in v0.4.0 / current latest v0.8.0”. -
Page: Reference — Anna Developer Hub
Issue:SDK default per-call timeout is 70sdoes not match the current App runtime default.
Impact: Developers may misunderstand timeout behavior or unnecessarily settimeoutMs.
Suggestion: Change the default to 180s. If 70s was old behavior, mark the version range. -
Page: Reference — Anna Developer Hub; Reference — Anna Developer Hub; Reference — Anna Developer Hub
Issue: The upload persistence flow is described inconsistently. Some places imply thatupload.confirmorupload.negotiatealone can complete persistence.
Impact: Developers may callupload.confirmwithout first callingupload.negotiate, or may thinkupload.negotiateitself already persists the file.
Suggestion: Standardize the flow: small files useupload.inline; large files useupload.negotiate + PUT + upload.confirm. -
Page: Reference — Anna Developer Hub; Reference — Anna Developer Hub
Issue: Needs confirmation: examples useAPP_NOT_GRANTED,APP_QUOTA_EXCEEDED, etc., while local runtime comments refer to App RPC error codes such asAPP_ERR_NOT_GRANTED,APP_ERR_QUOTA_EXCEEDED.
Impact: If the actual host returnsAPP_ERR_*, the documented catch examples will fail to match.
Suggestion: Verify the dispatcher’s actual return codes. If they areAPP_ERR_*, update the documented error codes and examples. -
Page: Reference — Anna Developer Hub
Issue: Theupload.negotiatesignature omits thesize_bytesparameter and says the negotiate stage does not validatesize_bytes.
Impact: Developers following the page may omit the size field, causing request failures or loss of size preflight checks.
Suggestion: Addsize_bytesto the signature and parameter table. Clarify whether it is used only for preflight/signing/recording, or also checked again during confirm. -
Page: Reference — Anna Developer Hub; Reference — Anna Developer Hub
Issue: Needs confirmation: return fields are documented asbytes_size/expires_in, but local SDK/examples commonly usesize_bytes/expires_at.
Impact: Developers may readbytes_sizeorexpires_inand get undefined if the actual response usessize_bytes/expires_at.
Suggestion: Verify the actual App Host API response. If the current response usessize_bytes/expires_at, update the signatures and return docs. -
Page: Reference — Anna Developer Hub
Issue: The ACL description mixes Anna App Host APIui.host_api.storage, rootpermissions, and Executahost_capabilities/aps.scope.*.
Impact: Developers may configure"host.storage"orhost_capabilities, but the Anna App iframe still will not get access toanna.storage.*.
Suggestion: Explain that App iframe authorization usesmanifest.ui.host_api.storage: ["get", "set", "delete", "list"]; documentstorage.read/writeand Executaaps.*capabilities separately. -
Page: Reference — Anna Developer Hub
Issue: The timeout recommendation is misleading: the page says large batches/cold starts may need explicit{ timeoutMs: 60_000 }, but the current runtime default forllmis already 180s.
Impact: Developers who follow the example and explicitly set 60s may make the call more likely to time out than with the default.
Suggestion: Document the default as 180s. If showing an override, use a value greater than the default or aligned with the actual host limit. -
Page: Reference — Anna Developer Hub
Issue: The ACL description mixes Anna App Host APIui.host_api.files, rootpermissions, and Executahost_capabilities/aps.files.
Impact: Developers may configure"host.files"orhost_capabilities, but the Anna App iframe still will not get access toanna.files.*.
Suggestion: Explain that App iframe authorization usesmanifest.ui.host_api.files; documenthost.filesinstall/display permissions and Executaaps.filescapabilities separately. -
Page: Reference — Anna Developer Hub
Issue: Needs confirmation: the page describesfiles.*as a usable APS object API, but the locally installedmethods.jsonstill marksfiles.delete/download_url/list/upload_finalize/upload_initas_h_not_implemented,stub: true.
Impact: Developers may hitnot_implementedin local CLI or some host environments, while the page does not state that APS handlers oranna-app dev --storage apsare required.
Suggestion: Clarify whetherfiles.*is currently stable. If it depends on APS backend/launch options, explicitly document that the fallback returnsnot_implemented. -
Page: Reference — Anna Developer Hub
Issue: The example code passes an obviously wrongpathtoupload_finalize; it generates a new UUID or empty string instead of reusing theupload_initpath.
Impact: Developers copying the example may fail finalize because the pending row cannot be found or the path is inconsistent.
Suggestion: Save and reuse the samepath, for exampleconst path = ..., and pass that variable to both init and finalize. -
Page: Reference — Anna Developer Hub
Issue: The return field is documented only asget_url, but the local SDK normalizesget_urltourlfor compatibility, and example README tool responses use{ path, url, expires_at }.
Impact: Developers moving between App Host API, SDK, and Executa wrappers may read the wrong field.
Suggestion: State that the raw host field isget_url, while SDK/examples may exposeurl; examples can useres.get_url || res.url. -
Page: Reference — Anna Developer Hub
Issue: Thefiles.deletesignature includesif_match, but the local SDKFilesClient.deletesends only{ path, scope }and does not exposeif_match.
Impact: Developers moving between App Host API and SDK/Executa file APIs may think all surfaces support concurrency-safe deletion.
Suggestion: Clarify whetherif_matchonly applies to App Host API. If the SDK should also support it, update SDK docs/implementation. -
Page: Reference — Anna Developer Hub; Reference — Anna Developer Hub; Reference — Anna Developer Hub
Issue: The page describesmanifest.ui.host_api.toolsas a required matching condition, but local CLI/examples show it can be omitted; when omitted or empty, declared required/optional Executas can be invoked.
Impact: Developers may thinkhost_api.toolsis mandatory, or misunderstand the semantics of omitted/empty[].
Suggestion: Explain that omitted/emptyhost_api.toolsdefaults to allowing declared Executas; explicit configuration narrows the set. -
Page: Reference — Anna Developer Hub; Reference — Anna Developer Hub; Reference — Anna Developer Hub
Issue: The<prefix>:<tool_id>/ “any prefixed form ending in :<tool_id>” description is too broad. Current behavior only supportsrequired:,optional:, bare IDs, and dev-timebundled:placeholders.
Impact: Developers may writefoo:<tool_id>, which the page implies may work, but CLI/production validation will reject.
Suggestion: Replace “any prefix” with an explicit list:required:,optional:, bare ID, and dev-timebundled:placeholder. -
Page: Reference — Anna Developer Hub
Issue: The example comment saystimeoutMs: 120_000will be clamped to MAX 180s, but 120s is below 180s and will not trigger the max clamp.
Impact: Developers may misunderstand timeout clamping behavior.
Suggestion: If the goal is to demonstrate clamping, change the example to240_000; otherwise change the comment to “ask for 2 min, below MAX”. -
Page: Reference — Anna Developer Hub; Reference — Anna Developer Hub
Issue: Needs confirmation: version/release-channel labels appear outdated or unclear. The page showsANNA-APP-RUNTIME V0.1,TIMEOUTMS SINCE V0.3, while my local install has@anna-ai/app-runtimev0.8.0, schema/dispatcher v0.10.0, and local bridge pinanna-app-runtime-local@0.2.0a9.
Impact: Developers cannot easily tell whether the page refers to the npm package version, schema wire version, or local runtime version.
Suggestion: Clarify whether these badges mean “introduced in” or “current”. If they mean current version, update them to the actual runtime/schema/bridge versions.
Summary
Most of these are not isolated typos. They look like synchronization issues between the documentation and the current Anna App runtime, schema, CLI, and examples.
The highest-priority areas to align are:
- Whether Host API authorization is controlled by
manifest.ui.host_api.*, rootpermissions[], orhost_capabilities. - Whether page version badges mean “introduced in” or “current”.
- Clear separation between App Host API, Executa capabilities, SDK wrappers, and local harness behavior.
- Example code should avoid outdated fields or misleading timeout/upload/ACL behavior.
I can also split this feedback into smaller page-level issues, or provide concrete local CLI / schema / example evidence for each item if useful.