Skip to content

Installing Apps

Apps in NimbleBrain are MCP server bundles. Each bundle provides tools that the agent can use. You can install bundles from the mpak registry, from a remote URL, or from a local directory.

  1. Search for a bundle:

    Terminal window
    nb bundle search granola
    Searching mpak registry for "granola"...
    Run: mpak search "granola"
  2. Add it to your config:

    Terminal window
    nb bundle add @nimblebraininc/granola
    Added "@nimblebraininc/granola" to config. Run nb reload to activate.
  3. Reload to activate:

    Terminal window
    nb reload
    Reload signal sent. Running runtime will pick up changes.
Terminal window
nb bundle add --url https://mcp.example.com/mcp --name my-server
Added remote "my-server" (https://mcp.example.com/mcp) to config. Run nb reload to activate.

For authenticated remote servers:

Terminal window
nb bundle add --url https://mcp.example.com/mcp --name my-server --auth bearer --token sk-abc123
TypeConfig fieldHow it resolves
Named (mpak)nameDownloads via mpak install, cached at ~/.mpak/cache/
LocalpathReads manifest.json from the directory. Path resolved relative to the config file.
RemoteurlConnects directly via HTTP transport (streamable-http or SSE). No download.

The agent has access to nb__search (with scope: "registry") and nb__manage_app. This means you can ask it to find and install what it needs:

“I need to search through meeting notes. Find a bundle for that and install it.”

The agent will:

  1. Call nb__search with scope: "registry" to search mpak
  2. Present options to you
  3. Call nb__manage_app with action: "install" to install your choice

Most bundles need API keys or tokens. In most cases, exporting the env var the bundle already looks for is enough:

Terminal window
export ANTHROPIC_API_KEY=sk-ant-...

For workspace-scoped values or when env vars aren’t a good fit, use nb config set -w <wsId>. See Credentials for the full picture.

Passing non-credential environment variables

Section titled “Passing non-credential environment variables”

Sensitive values belong in Credentials. For non-secret env vars (log level, region, connection tuning), use the env field on the bundle entry:

{
"bundles": [
{
"name": "@nimblebraininc/postgres",
"env": {
"PG_MAX_CONNECTIONS": "10",
"PG_STATEMENT_TIMEOUT": "30000"
}
}
]
}

Values in env merge with the bundle’s own mcp_config.env and the filtered process environment; env takes precedence.

After installing, check that the bundle is running:

Terminal window
nb status
Bundles: 2 configured
@nimblebraininc/granola
@nimblebraininc/postgres
Skills: 2 loaded
Bundle health:
granola: running (uptime: 120s, restarts: 0)
postgres: running (uptime: 120s, restarts: 0)