Skip to main content

Dasein

Universal memory for agentic AI. Attach a brain to any LangChain/LangGraph agent in a single line.

Dasein learns from your agent's execution history and automatically injects learned rules to improve performance, reduce costs, and increase reliability across runs.

Features

✨ Zero-friction integration - Wrap any LangChain or LangGraph agent in one line
🧠 Automatic learning - Agents learn from successes and failures
📊 Performance tracking - Built-in token usage, timing, and success metrics
🔄 Retry logic - Intelligent retry with learned optimizations
🔍 Execution traces - Detailed step-by-step visibility into agent behavior
☁️ Cloud-powered - Distributed rule synthesis and storage

Installation

pip install dasein-core

Or install from source:

git clone https://github.com/nickswami/dasein-core.git
cd dasein-core
pip install -e .

📓 Try It Now in Colab

🚀 Zero setup required! Try all three examples in your browser:

Open In Colab

Three complete examples with automatic learning:

🗄️ SQL Agent • 🌐 Browser Agent • 🔍 Deep Research

30-50% token reduction • Optimized navigation • 20-40% multi-agent savings


Quick Start

Basic Usage

from dasein import cognate
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.agents import create_sql_agent
from langchain_community.agent_toolkits import SQLDatabaseToolkit

# Create your agent as usual
llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash")
toolkit = SQLDatabaseToolkit(db=your_database, llm=llm)
agent = create_sql_agent(llm=llm, toolkit=toolkit, agent_type="tool-calling")

# Wrap with Dasein - that's it!
agent = cognate(agent)

# Use exactly like the original
result = agent.run("Show me the top 5 customers by revenue")

With Performance Tracking

from dasein import cognate

# Enable automatic retry and performance comparison
agent = cognate(
    your_agent,
    retry=2,  # Run twice to learn and improve
    performance_tracking=True  # Show before/after metrics
)

result = agent.run("your query")
# 🎯 Dasein automatically shows improvement metrics

Advanced: Custom Optimization Weights

from dasein import cognate

# Customize what Dasein optimizes for
agent = cognate(
    your_agent,
    weights={
        "w1": 2.0,  # Heavily favor successful rules
        "w2": 0.5,  # Less emphasis on turn count
        "w3": 1.0,  # Standard uncertainty penalty
        "w4": 3.0,  # Heavily optimize for token efficiency
        "w5": 0.1   # Minimal time emphasis
    }
)

Architecture

Dasein uses a cloud-first architecture for rule learning and synthesis:

┌─────────────────┐
│  Your Agent     │
│  (LangChain/    │
│   LangGraph)    │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Dasein Wrapper  │  ◄── cognate()
│ - Trace Capture │
│ - Rule Injection│
└────────┬────────┘
         │
    ┌────┴────┐
    ▼         ▼
┌────────┐ ┌────────┐
│Pre-Run │ │Post-Run│
│Service │ │Service │
│        │ │        │
│Recalls │ │Learns  │
│Rules   │ │Rules   │
└────────┘ └────────┘

How It Works

  1. Pre-Run: Dasein queries cloud services for relevant learned rules based on the task
  2. Execution: Rules are injected into the agent's prompts/tools at optimal injection points
  3. Trace Capture: Every LLM call, tool invocation, and decision is captured
  4. Post-Run: Traces are sent to cloud services for rule synthesis and learning
  5. Next Run: Improved rules are automatically available

API Reference

Core Functions

cognate(agent, weights=None, verbose=False, retry=0, performance_tracking=False, rule_trace=False)

Wrap any LangChain/LangGraph agent with Dasein's learning capabilities.

Parameters:

  • agent - LangChain or LangGraph agent instance
  • weights (dict) - Custom optimization weights for rule selection (w1-w5)
  • verbose (bool) - Enable detailed debug logging
  • retry (int) - Number of retries with learning (0 = single run, 2 = run twice with improvement)
  • performance_tracking (bool) - Show before/after performance metrics
  • rule_trace (bool) - Show detailed rule application trace

Returns: Wrapped agent with identical interface to the original

print_trace()

Display the execution trace of the last agent run.

get_trace()

Retrieve the execution trace as a list of dictionaries.

Returns: List[Dict] - Trace steps with timestamps, tokens, and decisions

clear_trace()

Clear the current execution trace.

inject_hint(hint: str)

Manually inject a hint/rule for the next agent run.

Parameters:

  • hint (str) - The hint text to inject

reset_brain()

Clear all local state and event storage.

Supported Frameworks

  • ✅ LangChain Agents (all agent types)
  • ✅ LangGraph Agents (CompiledStateGraph)
  • ✅ Custom agents implementing standard interfaces

Examples

See the examples/ directory for complete examples:

  • SQL Agent - Learn query patterns for a Chinook database
  • Browser Agent - Learn web scraping strategies
  • Research Agent - Multi-agent research coordination

Verbose Mode

For debugging, enable verbose logging:

agent = cognate(your_agent, verbose=True)

This shows detailed information about:

  • Rule retrieval from cloud services
  • Rule injection points and content
  • Trace capture steps
  • Post-run learning triggers

Requirements

  • Python 3.8+
  • LangChain 0.1.0+
  • LangChain Community 0.1.0+
  • LangChain Google GenAI 0.0.6+

See pyproject.toml for complete dependency list.

Configuration

Dasein uses cloud services for rule synthesis and storage. Configure service endpoints via environment variables:

export DASEIN_PRE_RUN_URL="https://your-pre-run-service.com"
export DASEIN_POST_RUN_URL="https://your-post-run-service.com"

Contact the Dasein team for cloud service access.

Performance

Dasein is designed for minimal overhead:

  • Pre-run: ~100-200ms for rule retrieval
  • Runtime: <1% overhead for trace capture
  • Post-run: Async - doesn't block your code

The benefits far outweigh the costs:

  • 🎯 30-50% token reduction on repeated tasks
  • 🎯 Fewer failed runs through learned error handling
  • 🎯 Faster execution with optimized tool usage

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

License

MIT License - see LICENSE file for details.

Troubleshooting

Common Issues in Colab/Jupyter

Q: I see timeout warnings for dasein-pre-run and dasein-post-run services

A: These warnings can appear on first connection while the cloud services wake up (cold start). The services are fully public and will work after a brief initialization period. Your agent will continue running and learning will activate automatically once the services respond.

Q: I see dependency conflict warnings

A: These are safe to ignore in Colab. The package will work correctly despite version mismatches with Colab's pre-installed packages.


Support

Citation

If you use Dasein in your research, please cite:

@software{dasein2025,
  title={Dasein: Universal Memory for Agentic AI},
  author={Dasein Team},
  year={2025},
  url={https://github.com/nickswami/dasein-core}
}

Built with ❤️ for the agentic AI community

Metadata

Release files for dasein-core 0.2.43

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dasein-core 0.2.43
File Size Uploaded
dasein_core-0.2.43.tar.gz 12.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for dasein-core 0.2.43
File Interpreter ABI Platform
dasein_core-0.2.43-py3-none-any.whl Python 3 none any Details

Total release size: 25.9 MB

Release files / dasein_core-0.2.43.tar.gz

Download URL dasein_core-0.2.43.tar.gz
Size 12.9 MB
Tags Source
SHA-256 checksum
How to use checksums
61b205f11937b6b5a1482a85d7d49f66da4172f40f872497fd1fdc87d834a3c6
BLAKE2b-256 checksum
How to use checksums
ca3dbd4a764004ff023bd5bd3a2b2c57539f19862307d103258c3ed38b168556
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / dasein_core-0.2.43-py3-none-any.whl

Download URL dasein_core-0.2.43-py3-none-any.whl
Size 12.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
09b1be6c7d3f66724c85835bb8a385ac135c67e453ba2539f429d7eba324c1ee
BLAKE2b-256 checksum
How to use checksums
19a137266ab41801070a6b4176ffa15cf2d601fb349efd62f48556c2a77f220d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.2.43 This release

2 release files

0.2.42

2 release files

0.2.41

2 release files

0.2.40

2 release files

0.2.39

2 release files

0.2.38

2 release files

0.2.37

2 release files

0.2.36

2 release files

0.2.35

2 release files

0.2.34

2 release files

0.2.33

2 release files

0.2.32

2 release files

0.2.31

2 release files

0.2.30

2 release files

0.2.29

2 release files

0.2.28

2 release files

0.2.27

2 release files

0.2.26

2 release files

0.2.25

2 release files

0.2.24

2 release files

0.2.23

2 release files

0.2.22

2 release files

0.2.21

2 release files

0.2.20

2 release files

0.2.19

2 release files

0.2.18

2 release files

0.2.17

2 release files

0.2.16

2 release files

0.2.9

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page