# Acontext Documentation - [What is Acontext?](/): Agent Skills as a Memory Layer — learns from runs, writes Markdown skill files, reuses them on the next run - [Quickstart for AI](/llm_quick): Let your coding agent build with Acontext using llms.txt - [Quickstart](/quick): Install Acontext SDK and run a demo script - [One-command Setup](/skill_setup): Copy one line, paste it to your agent, and Acontext is installed - [Introduction](/api-reference/introduction): Build AI agents with skill memory - [Claude Code](/integrations/claude-code): Skill memory plugin for Claude Code — auto-capture, auto-learn, cross-session skill sync - [OpenClaw](/integrations/openclaw): Skill memory plugin for OpenClaw agents — auto-capture, auto-learn, native skill sync - [Using Agent Skills](/engineering/agent_skills): Upload skills and build agents that use them - [Prompt Cache Stability](/engineering/cache): Maintain LLM cache hits when using edit strategies - [Copy Session](/engineering/copy_session): Duplicate sessions to experiment safely or create conversation branches - [Context Editing](/engineering/editing): Edit context on-the-fly without modifying stored messages - [Session Summary](/engineering/session_summary): Compact task summary for prompts - [What is Context Engineering?](/engineering/whatis): Design and optimize the information provided to LLMs and AI agents - [Async Python Client](/chore/async_python): Use the async Python client for non-blocking Acontext operations - [Use Acontext Badge](/chore/badge): Tag your projects with Acontext badge, let the community know - [What is Skill Memory?](/learn/quick): Persistent agent memory stored as structured skill files — filesystem-compatible, configurable, and human-readable - [What is Task Tracking?](/observe/whatis): Automatic task extraction, progress recording, and status detection from agent conversations — zero instrumentation - [Core Dependencies](/settings/core): Configure LLM providers, embedding models, and core services - [Run Acontext Locally](/settings/local): Use `acontext-cli` to run Acontext locally. - [Runtime](/settings/runtime): Runtime settings are used to configure the runtime behavior of the Acontext Agent. - [What is Session Storage?](/store/overview): Unified storage for messages, files, skills, and sandboxes - [What is Agent Tool?](/tool/whatis): undefined - [Agno](/integrations/framework/agno): Integrate Agno with Acontext for session persistence and task extraction - [Claude Agent SDK](/integrations/framework/claude-agent): Integrate Claude Agent SDK with Acontext for session persistence - [OpenAI Agents SDK](/integrations/framework/openai_agent): Integrate OpenAI Agents SDK with Acontext for session persistence and task extraction - [Vercel AI SDK](/integrations/sdk/ai-sdk): Integrate Vercel AI SDK with Acontext for session persistence and task extraction - [OpenAI Python SDK](/integrations/sdk/openai-python): Integrate OpenAI Python SDK with Acontext for session persistence and task extraction - [OpenAI TypeScript SDK](/integrations/sdk/openai-typescript): Integrate OpenAI TypeScript SDK with Acontext for session persistence and task extraction - [End-to-End Encryption](/security/encryption): Per-project data-at-rest encryption with zero-knowledge key management - [Custom Skills for Skill Memory](/learn/custom-memory): Define how your agent remembers by writing SKILL.md files - [End-to-End Auto-Learn Demo](/learn/e2e-demo): A complete walkthrough showing how an agent learns from one incident and applies that knowledge to the next - [Managing Learning Spaces](/learn/learning-spaces): Default skills, custom skills, and managing learning spaces - [Agent Tasks](/observe/agent_tasks): Automatic task extraction from agent conversations - [Session Buffer](/observe/buffer): Batch processing for cost-efficient task extraction - [Dashboard](/observe/dashboard): View Context, Artifacts, Tasks and Skills - [Disable Task Tracking](/observe/disable_tasks): Skip automatic task extraction for specific sessions - [Task Evaluation Criteria](/observe/task_eval_criteria): Configure custom success and failure standards for task tracking - [Distributed Tracing](/observe/traces): Monitor request flows with OpenTelemetry - [Disk](/store/disk): S3-backed file storage for your agent - [Store with User](/store/per-user): Associate Sessions, Disks, and Skills with user identifiers - [Sandbox](/store/sandbox): Execute code in isolated environments - [Session Events](/store/session_events): Annotate sessions with structured events like disk operations and free-text notes - [Agent Skill](/store/skill): Store reusable agent skills - [Sandbox Tools](/tool/bash_tools): Execute code and manage files in secure sandbox environments - [Disk Tools](/tool/disk_tools): Enable LLMs to manage files on Acontext disks - [Skill Content Tools](/tool/skill_tools): Enable LLMs to read skill files without sandbox - [Session Configs](/store/messages/filter-by-configs): Manage session-level configuration with full replacement, patch, and filter semantics - [Message Status](/store/messages/message_status): Understand the session_task_process_status field on each message - [Multi-modal Messages](/store/messages/multi-modal): Store messages with images, audio, and documents - [Multi-provider Messages](/store/messages/multi-provider): Store and retrieve messages from OpenAI, Anthropic, and Gemini formats - [Anthropic Special Flags](/store/messages/special/anthropic): Store Anthropic-specific message flags like prompt caching and thinking blocks - [Format Conversion](/store/messages/special/format-conversion): How Acontext normalizes and converts messages across OpenAI, Anthropic, and Gemini formats - [Gemini Special Handling](/store/messages/special/gemini): Gemini-specific message handling like thinking blocks and function call ID generation - [Message Metadata](/store/messages/special/message-meta): Attach custom metadata to messages for tracking, filtering, and analytics - [Create a new project](/api-reference/admin/v1/project/post): Create a new project with a randomly generated secret key - [Delete a project](/api-reference/admin/v1/project/project_id/delete): Delete a project by ID - [Analyze project metrics](/api-reference/admin/v1/project/project_id/metrics/get): Get metrics for a project by querying Jaeger API with project_id filter - [Rotate project secret key (admin)](/api-reference/admin/v1/project/project_id/secret_key/put): Generate a new secret key for a non-encrypted project. Blocked for encrypted projects. - [Analyze project statistics](/api-reference/admin/v1/project/project_id/statistics/get): Get statistics for a project - [Analyze project usages](/api-reference/admin/v1/project/project_id/usages/get): Get usage analytics for a project - [List agent skills](/api-reference/agent_skills/get): List all agent skills under a project - [Create agent skill](/api-reference/agent_skills/post): Upload a zip file containing agent skill. The zip file must contain a SKILL.md file (case-insensitive) with YAML format containing 'name' and 'description' fields. The name and description will be extracted from SKILL.md. Files are stored as Disk Artifacts. Optionally associate with a user identifier. - [Get agent skill by ID](/api-reference/agent_skills/id/get): Get agent skill by its UUID - [Delete agent skill](/api-reference/agent_skills/id/delete): Delete agent skill and all associated files - [Download skill to sandbox](/api-reference/agent_skills/id/download_to_sandbox/post): Download all files from an agent skill to a sandbox environment. Files are placed at /skills/{skill_name}/. - [Download skill as ZIP file](/api-reference/agent_skills/id/download_zip/get): Download all files from an agent skill as a ZIP archive. Files are streamed directly with their relative paths preserved. - [Get file from agent skill](/api-reference/agent_skills/id/file/get): Get file content or download URL from agent skill. If the file is text-based (parseable), returns parsed content. Otherwise, returns a presigned download URL. - [List disks](/api-reference/disk/get): List all disks under a project - [Create disk](/api-reference/disk/post): Create a disk group under a project. Optionally associate with a user identifier. - [Delete disk](/api-reference/disk/disk_id/delete): Delete a disk by its UUID - [Get artifact](/api-reference/disk/disk_id/artifact/get): Get artifact information by path and filename. Optionally include a presigned URL for downloading and parsed file content. - [Upsert artifact](/api-reference/disk/disk_id/artifact/post): Upload a file and create or update an artifact record under a disk. File size must not exceed the configured maximum upload size limit (default: 16MB). - [Delete artifact](/api-reference/disk/disk_id/artifact/delete): Delete an artifact by path and filename - [Update artifact meta](/api-reference/disk/disk_id/artifact/put): Update an artifact's metadata (user-defined metadata only) - [Download artifact content](/api-reference/disk/disk_id/artifact/download/get): Download raw artifact file content. Decrypts content if encryption is enabled. - [Download artifact to sandbox](/api-reference/disk/disk_id/artifact/download_to_sandbox/post): Download an artifact from disk storage to a sandbox environment - [Search artifact paths with glob patterns](/api-reference/disk/disk_id/artifact/glob/get): Search through artifact file paths using glob patterns (*, ?, etc.) - [Search artifact content with regex](/api-reference/disk/disk_id/artifact/grep/get): Search through text-based artifact content using regex patterns - [List artifacts](/api-reference/disk/disk_id/artifact/ls/get): List artifacts in a specific path or all artifacts in a disk - [Upload file from sandbox to disk](/api-reference/disk/disk_id/artifact/upload_from_sandbox/post): Upload a file from a sandbox environment to disk storage as an artifact - [List learning spaces](/api-reference/learning_spaces/get): List learning spaces with optional user, meta filter, and cursor pagination. - [Create learning space](/api-reference/learning_spaces/post): Create a new learning space. Optionally associate with a user. - [Get learning space](/api-reference/learning_spaces/id/get): Get a learning space by ID. - [Update learning space (patch meta)](/api-reference/learning_spaces/id/patch): Merge provided meta into existing meta. Existing keys not in the request are preserved. - [Delete learning space](/api-reference/learning_spaces/id/delete): Delete a learning space. Junction records are cascade-deleted by the DB. - [Learn from session](/api-reference/learning_spaces/id/learn/post): Create an async learning record from a session. Initially stays in pending status. - [List sessions in space](/api-reference/learning_spaces/id/sessions/get): List all learning session records for a space, including their processing status. - [Get session in space](/api-reference/learning_spaces/id/sessions/session_id/get): Get a single learning session record by session ID within a learning space. - [List skills in space](/api-reference/learning_spaces/id/skills/get): List all skills associated with a learning space. Returns full skill data. - [Include skill in space](/api-reference/learning_spaces/id/skills/post): Add a skill to a learning space. - [Exclude skill from space](/api-reference/learning_spaces/id/skills/skill_id/delete): Remove a skill from a learning space. Idempotent — silently succeeds if not associated. - [Serve material content](/api-reference/material/token/get): Download file content via a material token. No authentication required. Returns the file content with appropriate Content-Type header. - [Push metrics to external API](/api-reference/metrics/v1/post): Create storage metrics, fetch metrics, push to external API, and store quota status in Redis - [Get project quota](/api-reference/metrics/v1/:project_id/quota/get): Get quota information for a project based on path and method - [Get project configs](/api-reference/project/configs/get): Returns the project-level configuration (stored under the "project_config" key). - [Patch project configs](/api-reference/project/configs/patch): Merges the provided keys into the project-level configuration. Keys with null values are deleted (reset to default). - [Disable project encryption](/api-reference/project/decrypt/post): Decrypts all existing S3 data for the project and disables encryption for future writes. - [Enable project encryption](/api-reference/project/encrypt/post): Encrypts all existing S3 data for the project and enables encryption for future writes. - [Create a new sandbox](/api-reference/sandbox/post): Create and start a new sandbox for the project - [Get sandbox logs](/api-reference/sandbox/logs/get): Get sandbox logs for the project with cursor-based pagination - [Kill a sandbox](/api-reference/sandbox/sandbox_id/delete): Kill a running sandbox - [Execute command in sandbox](/api-reference/sandbox/sandbox_id/exec/post): Execute a shell command in the specified sandbox - [Get sessions](/api-reference/session/get): Get all sessions under a project, optionally filtered by user or configs - [Create session](/api-reference/session/post): Create a new session. Optionally associate with a user identifier. You can also specify a custom UUID using use_uuid. - [Delete session](/api-reference/session/session_id/delete): Delete a session by id - [Download session asset](/api-reference/session/session_id/asset/download/get): Download a session asset (file attachment) by its S3 key. Decrypts if encryption is enabled. - [Get session configs](/api-reference/session/session_id/configs/get): Get session configs by id - [Patch session configs](/api-reference/session/session_id/configs/patch): Update session configs using patch semantics. Only updates keys present in the request. Pass null as value to delete a key. Returns the complete configs after patch. - [Update session configs](/api-reference/session/session_id/configs/put): Update session configs by id - [Copy session](/api-reference/session/session_id/copy/post): Create a complete copy of a session with all its messages and tasks. The copied session will be independent and can be modified without affecting the original. - [Get events for session](/api-reference/session/session_id/events/get): Get events for a session with cursor-based pagination. - [Add event to session](/api-reference/session/session_id/events/post): Add a structured event to a session. Events are stored alongside messages and can be retrieved chronologically. - [Flush session](/api-reference/session/session_id/flush/post): Flush the session buffer for a given session - [Get messages from session](/api-reference/session/session_id/messages/get): Get messages from session. Default format is openai. Can convert to acontext (original), anthropic, or gemini format. - [Store message to session](/api-reference/session/session_id/messages/post): Supports JSON and multipart/form-data. In multipart mode: the payload is a JSON string placed in a form field. The format parameter indicates the format of the input message (default: openai, same as GET). The blob field should be a complete message object: for openai, use OpenAI ChatCompletionMessageParam format (with role and content); for anthropic, use Anthropic MessageParam format (with role and content); for acontext (internal), use {role, parts} format. The optional meta field allows attaching user-provided metadata to the message, which can be retrieved via get_messages().metas or updated via patch_message_meta(). - [Patch message metadata](/api-reference/session/session_id/messages/message_id/meta/patch): Update message metadata using patch semantics. Only updates keys present in the request. Pass null as value to delete a key. - [Get message observing status for a session](/api-reference/session/session_id/observing_status/get): Returns the count of observed, in_process, and pending messages - [Get tasks from session](/api-reference/session/session_id/task/get): Get tasks from session with cursor-based pagination - [Get token counts for session](/api-reference/session/session_id/token_counts/get): Get total token counts for all text and tool-call parts in a session - [List users](/api-reference/user/ls/get): Get all users under a project. If limit is not provided or 0, all users will be returned. - [Delete user](/api-reference/user/identifier/delete): Delete a user by identifier and cascade delete all associated resources (Session, Disk, Skill) - [Get user resources](/api-reference/user/identifier/resources/get): Get the resource counts (Sessions, Disks, Skills) associated with a user