Skip to content

RFC: Should we add a nanobot update command? #3421

@chengyongru

Description

@chengyongru

Summary

Propose adding a nanobot update CLI command that lets users check for and apply updates to nanobot in one step, instead of manually running pip install --upgrade nanobot-ai (or the uv equivalent).

Motivation

Nanobot is moving fast — recent weeks have seen multiple patch releases (v0.1.5, v0.1.5.post1, v0.1.5.post2). Users currently need to:

  1. Remember which package manager they used to install (pip, uv, pipx, etc.)
  2. Run the correct upgrade command manually
  3. Restart nanobot

This is friction we can remove. A built-in nanobot update command would:

  • Lower the barrier for less technical users who just want to stay current
  • Detect the install method automatically (pip, uv, pipx, Homebrew, etc.)
  • Show changelog highlights so users know what changed
  • Optionally restart the running instance after upgrade

Open Questions

This is an RFC — we want community input before committing to an implementation. Key questions:

  1. Scope: self-update only, or also dependencies?

    • Should nanobot update only upgrade the nanobot-ai package, or also pip install --upgrade its dependencies?
  2. Install method detection

    • How reliable can we detect whether the user installed via pip, uv, pipx, Homebrew, Docker, or from source?
    • Is falling back to "we couldn't detect your install method" acceptable?
  3. Should it support --check / --dry-run?

    • nanobot update --check would just report if a new version is available without upgrading
    • nanobot update --dry-run would show what would happen
  4. Changelog / release notes display

    • Should we fetch and display the latest release notes from GitHub?
    • Or just show a link to the releases page?
  5. Auto-restart behavior

    • If nanobot is running as a gateway/service, should update restart it automatically?
    • Or just print a reminder to restart manually?
  6. Should we add auto-update-check on startup?

    • Like Homebrew does: on nanobot gateway or nanobot agent, print a notice like "A new version (v0.1.6) is available. Run nanobot update to upgrade."
    • This would be a separate feature but worth discussing together.

Proposed Interface (Draft)

$ nanobot update

  Checking for updates...

  Current version:  v0.1.5.post2
  Latest version:   v0.1.6

  Changes since v0.1.5.post2:
    - feat: support for model presets
    - fix: prevent duplicate sub-agent responses
    - fix: handle Windows PermissionError on directory fsync

  Upgrade via pip? [Y/n]: y

  Successfully upgraded to nanobot-ai v0.1.6

  Restart nanobot to apply the update.
$ nanobot update --check

  Current version:  v0.1.5.post2
  Latest version:   v0.1.6

  A new version is available. Run `nanobot update` to upgrade.

Alternatives Considered

  • Do nothing — users manage updates themselves. Simple but ignores the UX improvement.
  • Document the upgrade command in nanobot status output — lightweight alternative, just show "To update: pip install --upgrade nanobot-ai" in nanobot status.

Related Component

CLI

Your Input Wanted

Please share your thoughts:

  • Would you find this useful?
  • Which package manager did you install nanobot with?
  • Any concerns about a self-updating CLI tool?
  • Would you prefer a simpler approach (e.g., just a version-check notice on startup)?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions