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__discover_bundles and nb__manage_bundle. 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__discover_bundles to search mpak
  2. Present options to you
  3. Call nb__manage_bundle with action: "install" to install your choice

Many bundles need API keys or other credentials. Use nb config set:

Terminal window
nb config set @nimblebraininc/granola api_key=grn_abc123
Saved api_key for @nimblebraininc/granola

View configured values (masked):

Terminal window
nb config get @nimblebraininc/granola
api_key: gr****

Remove a value:

Terminal window
nb config clear @nimblebraininc/granola api_key
Cleared api_key for @nimblebraininc/granola

Credentials are stored in ~/.mpak/config.json with 0600 permissions (owner read/write only). They are mapped to environment variables via the bundle manifest’s ${user_config.<field>} references and passed to the bundle process at startup.

You can also pass environment variables directly in the config:

{
"bundles": [
{
"name": "@nimblebraininc/postgres",
"env": {
"DATABASE_URL": "postgres://localhost:5432/mydb"
}
}
]
}

Environment variables in env are merged with the bundle’s own mcp_config.env and the process environment. The env field takes precedence.

After installing, check that the bundle is running:

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