Use coding agents where your team works. Deeply integrate with your existing tools for ultimate context.
Deprecate legacy users route
Remove deprecated /v1/legacy_users endpoint and migrate all services to use /v1/users for consistency.▊
Acceptance Criteria
- Remove /v1/legacy_users endpoint from all backend services
- Update all clients to use /v1/users
- Verify new endpoint is working
- No references to legacy endpoint remain in codebase▊
Remove deprecated /v1/legacy_users endpoint and migrate all services to use /v1/users for consistency.▊
Acceptance Criteria
- Remove /v1/legacy_users endpoint from all backend services
- Update all clients to use /v1/users
- Verify new endpoint is working
- No references to legacy endpoint remain in codebase▊
"Having Codex add technical details to requirements directly from codebase research has been a game changer."
Learn moreAssign tickets

Assign tickets
Improve requirements
Get status updates
"We loop Blocks into ad-hoc discussions to answer questions from the codebase and create tickets from the conversation."
Learn moreUnblock team members

Unblock team members
Delegate tasks
Create tickets
Investigate issues
"We ask Claude Code to review, address the changes, and create a new PR with the updates."
Learn morePR review

PR review
Address PR comments
Issue to PR
“It's like giving your team 10x more engineering resources.”

We take your privacy seriously. Remote environments with enterprise-grade protections.
Data deletion
Configure the lifetime of your data
Workload isolation
Environments belong to you
No training
We never analyze or train on your data
from blocks import agent, on
from smolagents import CodeAgent, WebSearchTool, LiteLLMModel
@agent(name="custom-slack")
@on("slack.mention")
def custom_slack(input, config: SmolAgentConfig):
model = LiteLLMModel(
model_id=config.model,
)
agent = CodeAgent(tools=[WebSearchTool()], model=model)
client = slack_sdk.WebClient(token=SLACK_TOKEN)
client.chat_postMessage(channel=channel, text="Agent is thinking...", thread_ts=ts)
for _, step in enumerate(agent.memory.steps):
messages = step.to_messages()
...Frequently asked questions
If you have other questions, please email us
Blocks focuses purely on background agents, and is not used synchronously in an IDE like Cursor, Claude Code, and so on. Blocks orchestrates background coding agents in containerized sandbox environments where they can interact with connected tooling. Think Devin, but instead of a proprietary agent, you can use familiar agents like Codex or Claude Code in a Devin-like manner.
We're currently in beta and free for early users (with limited quotas). Pricing will be announced before general availability, with plans designed for both individual developers and teams.
Yes, you can use your existing coding agent subscriptions with Blocks. We currently support Anthropic subscriptions for Claude Code, and will be adding support for OpenAI Codex soon. Otherwise, you can use API keys for any agent if preferred.
Blocks connects seamlessly with popular development tools like GitHub, Linear, Slack, and more through secure OAuth integrations. Agents can read context and take actions across connected tools.
Like all coding agents, Blocks agents will only perform what they are requested to, but may fulfill requests in unexpected ways if they are not appropriately bounded (ex: agent may commit against a branch when the requester expected a PR since it was not explicitly mentioned). It is important to specify exactly what the agents behavior should be to the best of your ability to avoid unexpected behavior.

