Installations
Attach outside systems and capabilities to an agent, inspect their state, and understand what needs attention before they become useful.
Overview
An installation is how an agent picks up an outside capability. GitHub access, a Slack workspace, a knowledge-base connector, a long-term memory store: each one is an installation attached to the agent.
The installation tells you four things:
- what's attached
- whether it's connected
- what state it's in
- what to do next if it isn't usable yet
When something an agent should be able to do isn't working, the installation is the first place to look. Its status tells you what's missing.
What one installation enables
A single installation can enable several things at once. Installing a GitHub App, for example, gives the agent:
- Tools: the GitHub builtin tools (open PR, comment on issue, read file) become available as agent tools
- Knowledge: the repositories the app is installed on become available as knowledge sources the agent can index and search
- Credentials: a scoped token the agent uses for API calls, managed and refreshed by the platform
That is why installations sit upstream of both Tools and Knowledge: one attachment, multiple capabilities. When a GitHub-backed agent can't find a repo, the first place to look is whether the GitHub App installation is active, not the knowledge source directly.
The installation lifecycle
An installation starts as an attachment, moves through setup state, and only then becomes something the agent can reliably use.
A concrete example
Suppose Company A's support agent needs access to a site or provider-backed integration so it can help Company B diagnose a broken onboarding flow.
The operator path is:
- inspect the available installation kinds
- create the installation on the right agent
- inspect its current state
- follow the next action if setup is incomplete
- activate it when it is ready
This is a real lifecycle, not just one create command.
Available installation kinds
| Kind | What it connects |
|---|---|
memory/long-term |
Persistent agent memory |
archastro/thread |
Thread context and history |
integration/github |
GitHub personal OAuth (repo access, issues, PRs) |
enablement/github_app |
GitHub App (org-wide repo access, bot identity for PR reviews) |
integration/slack |
Slack user OAuth |
enablement/slack_bot |
Slack bot (post to channels as bot identity) |
web/site |
Website content for knowledge indexing |
list agentinstallationkinds is the source of truth for what's available in your app. Kinds vary by app and can change over time, so always check before scripting:
archagent list agentinstallationkinds
Inspect available kinds
Before you attach anything, inspect the kinds the platform supports for the current app:
archagent list agentinstallationkinds
This is where you discover what categories are actually available instead of guessing from screenshots or old examples.
Create an installation
Create one for an agent:
archagent create agentinstallation \
--agent <agent_id> \
--kind web/site \
--config '{"url":"https://status.example.com"}'
web/site here is a literal installation kind value, not a path. Different apps expose different kinds, so always start with list agentinstallationkinds before you script one.
Another installation kind may require provider-specific config instead. The exact input depends on the kind.
Installations are attached to agents explicitly. They are not ambient platform magic.
Inspect installation state
After creation, inspect it directly:
archagent list agentinstallations --agent <agent_id>
archagent describe agentinstallation <installation_id>
This is the command loop you use to answer:
- what state is this installation in?
- is there a next action?
- is there a provider-specific connect path?
- did setup fail?
That information is much more actionable than vague "integration isn't working" reports.
Activate or remove it
Some kinds auto-activate on create and start working immediately. Kinds like web/site, web/links, archastro/thread, and memory/long-term don't need an explicit activate step. They move directly to active when you create them.
Kinds that require external authorization (GitHub, Slack) stay in pending until you complete the OAuth connect flow, then activate:
archagent activate agentinstallation <installation_id>
activate is idempotent. Running it on an already-active installation is a no-op, so scripts that call it unconditionally after create stay safe.
If you no longer need an installation:
archagent delete agentinstallation <installation_id>
The explicit lifecycle keeps debugging and review straightforward. There's no hidden state to chase.
Org-wide integrations: enable Slack or GitHub once for everyone
Per-agent installations attach a credential to a single agent. For Slack and GitHub, an org admin can also install at the organization level: one OAuth grant, and every agent in the org inherits access without per-agent setup.
Where to enable it:
- Sign in to archagents.com as an org admin
- Open Settings → Integrations under Org settings
- Click Enable on the Slack or GitHub card and complete the OAuth flow
Behavior:
- The OAuth callback persists a system-owned integration record scoped to your org.
- Every agent in that org gets the same Slack or GitHub access through its agent tools. No per-agent
agentinstallationneeded for that provider. The Slack bot also exposesslack.*script bindings (see the Script Language Reference). - Per-agent installations of the same kind continue to work in parallel. Useful when a single agent needs a narrower or different credential than the org-wide one.
When to use which:
| Situation | Pick |
|---|---|
| Agent A and agent B should both post to the same Slack workspace | Org-wide |
| Agent A operates in workspace X, agent B in workspace Y | Per-agent |
| You want the fastest setup that covers every agent | Org-wide (one click for the whole org) |
| You're shipping an agent that needs its own narrowly-scoped credential | Per-agent |
Only the Slack Bot and GitHub App providers support the org-wide path today. Slack user OAuth and GitHub personal OAuth (integration/slack, integration/github) stay per-agent.
How installations relate to knowledge and tools
Installations are the upstream attachment surface behind:
- knowledge connections
- provider-backed integrations
- certain tool capabilities
They matter even when a developer thinks they're "really working on knowledge" or "really working on tools." The installation's status tells you whether the underlying attachment is healthy before you debug anything higher level.
Best practices
Good installation workflows follow four rules:
- inspect kinds before creating
- attach only what the agent actually needs
- check status and next action before blaming the model
- activate only when the setup is clearly ready
Predictable installations make agents easier to trust as you scale up.
Where to go next
- Read Knowledge for the source and ingestion layer above installations.
- Read Tools for action surfaces the agent can operate once attachments are ready.
- Read Webhooks when you need the lighter-weight path for an external system to push events into the platform without a full integration.
- Read Portal for the visual operator workflow around setup and review.
Have feedback?
Help us make this page even more useful.
Tell us what you'd like to see expanded, which examples would help, or what workflow you want covered next. Every message gets read.