What You Can Do on the Hub
Create and Use Configs
Use a combinations of models, tools, and rules for different coding contexts. Learn more β
Create and Run Agents
Run background agents that complete tasks automatically in your repositories. Learn more β
Hub Components
Both configs and agents are built from reusable components that you can create, share, and customize:Models
Large Language Models from various providers (OpenAI, Anthropic, etc.) configured for specific roles like chat, autocomplete, or editing
MCPs
Model Context Protocol servers that provide tools and capabilities like database access, web search, or custom functions
Rules
Guidelines that shape AI behavior - coding standards, constraints, or specific instructions for your domain
Prompts
Reusable instructions for common tasks, optimized for specific workflows or coding patterns
Creating Components
Components are the building blocks used in both configs and agents. When you create a component on the hub, it becomes available for use in any config or agent.
Create New
Start with a blank template:
- Select New Rules, Prompts, Configs, or Agents from the Hub navigation
- Click βNewβ to start with a blank template
- Configure by filling in the inputs to create your markdown configuration

Remix Existing
Customize an existing component:
- Browse the Hub for what you need
- Click βRemixβ to create a copy that you can customize
- Modify the configuration for your specific needs
- Save your customized version

Component Permissions
Set visibility for your components:- Personal: Only you can see and use
- Public: Anyone can discover and use
- Organization: Team members can access
Component Inputs
Some components can receive values, including secrets, as inputs through templating. For values that the user needs to set, you can use template variables (e.g.${{ inputs.API_KEY}}). Then, the user can set API_KEY: ${{ secrets.MY_API_KEY }} in the with clause of their agent or config.
Choosing between
secrets. and inputs.When creating blocks for the hub:- Use
${{ inputs.INPUT_NAME }}in your block definition when you want users to be able to customize which secret is used - Users will then map their own secrets using
${{ secrets.SECRET_NAME }}in thewithclause
${{ secrets.SECRET_NAME }} directly in your block.