remembra 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,61 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ dist/
9
+ downloads/
10
+ eggs/
11
+ .eggs/
12
+ lib/
13
+ lib64/
14
+ parts/
15
+ sdist/
16
+ var/
17
+ wheels/
18
+ *.egg-info/
19
+ .installed.cfg
20
+ *.egg
21
+
22
+ # Virtual environments
23
+ .venv/
24
+ venv/
25
+ ENV/
26
+ env/
27
+
28
+ # Testing / coverage
29
+ .pytest_cache/
30
+ .coverage
31
+ coverage.xml
32
+ htmlcov/
33
+ .tox/
34
+
35
+ # Type checking
36
+ .mypy_cache/
37
+ .ruff_cache/
38
+
39
+ # IDE
40
+ .vscode/
41
+ .idea/
42
+ *.swp
43
+ *.swo
44
+ .DS_Store
45
+
46
+ # Environment
47
+ .env
48
+ .env.*
49
+ !.env.example
50
+
51
+ # Docker volumes (local dev)
52
+ .qdrant_data/
53
+ .postgres_data/
54
+
55
+ # Logs
56
+ *.log
57
+ logs/
58
+
59
+ # Distribution
60
+ *.tar.gz
61
+ *.whl
remembra-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DolphyTech
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,163 @@
1
+ Metadata-Version: 2.4
2
+ Name: remembra
3
+ Version: 0.1.0
4
+ Summary: Universal memory layer for AI applications. Self-host in 5 minutes.
5
+ Project-URL: Homepage, https://github.com/AskDolphy/remembra
6
+ Project-URL: Documentation, https://github.com/AskDolphy/remembra#readme
7
+ Project-URL: Repository, https://github.com/AskDolphy/remembra.git
8
+ Project-URL: Issues, https://github.com/AskDolphy/remembra/issues
9
+ Project-URL: Changelog, https://github.com/AskDolphy/remembra/blob/main/CHANGELOG.md
10
+ Author-email: DolphyTech <admin@dolphytech.com>
11
+ Maintainer-email: Damany Williams <admin@dolphytech.com>
12
+ License: MIT
13
+ License-File: LICENSE
14
+ Keywords: agent,ai,chatbot,embeddings,langchain,llm,memory,openai,rag,vector-search
15
+ Classifier: Development Status :: 3 - Alpha
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Classifier: Typing :: Typed
25
+ Requires-Python: >=3.11
26
+ Requires-Dist: httpx>=0.27.0
27
+ Provides-Extra: all
28
+ Requires-Dist: aiosqlite>=0.20.0; extra == 'all'
29
+ Requires-Dist: fastapi>=0.115.0; extra == 'all'
30
+ Requires-Dist: openai>=1.0.0; extra == 'all'
31
+ Requires-Dist: pydantic-settings>=2.6.0; extra == 'all'
32
+ Requires-Dist: pydantic>=2.9.0; extra == 'all'
33
+ Requires-Dist: python-ulid>=3.0.0; extra == 'all'
34
+ Requires-Dist: qdrant-client<2.0.0,>=1.12.0; extra == 'all'
35
+ Requires-Dist: structlog>=24.4.0; extra == 'all'
36
+ Requires-Dist: uvicorn[standard]>=0.32.0; extra == 'all'
37
+ Provides-Extra: dev
38
+ Requires-Dist: build>=1.0.0; extra == 'dev'
39
+ Requires-Dist: mypy>=1.13.0; extra == 'dev'
40
+ Requires-Dist: pytest-asyncio>=0.24.0; extra == 'dev'
41
+ Requires-Dist: pytest-cov>=6.0.0; extra == 'dev'
42
+ Requires-Dist: pytest>=8.3.0; extra == 'dev'
43
+ Requires-Dist: ruff>=0.8.0; extra == 'dev'
44
+ Requires-Dist: twine>=5.0.0; extra == 'dev'
45
+ Provides-Extra: server
46
+ Requires-Dist: aiosqlite>=0.20.0; extra == 'server'
47
+ Requires-Dist: fastapi>=0.115.0; extra == 'server'
48
+ Requires-Dist: openai>=1.0.0; extra == 'server'
49
+ Requires-Dist: pydantic-settings>=2.6.0; extra == 'server'
50
+ Requires-Dist: pydantic>=2.9.0; extra == 'server'
51
+ Requires-Dist: python-ulid>=3.0.0; extra == 'server'
52
+ Requires-Dist: qdrant-client<2.0.0,>=1.12.0; extra == 'server'
53
+ Requires-Dist: structlog>=24.4.0; extra == 'server'
54
+ Requires-Dist: uvicorn[standard]>=0.32.0; extra == 'server'
55
+ Description-Content-Type: text/markdown
56
+
57
+ # Remembra - AI Memory Layer
58
+
59
+ > Persistent memory for AI applications. Self-host in 5 minutes.
60
+
61
+ ## What Is This?
62
+
63
+ Remembra is a universal memory layer for LLMs. It solves the fundamental problem that every AI forgets everything between sessions.
64
+
65
+ ```python
66
+ from remembra import Memory
67
+
68
+ memory = Memory(user_id="user_123")
69
+
70
+ # Store memories
71
+ memory.store("User prefers dark mode and works at Acme Corp")
72
+
73
+ # Recall with context
74
+ context = memory.recall("What are user's preferences?")
75
+ # Returns: "User prefers dark mode. Works at Acme Corp."
76
+ ```
77
+
78
+ ## Why We're Building This
79
+
80
+ ### The Problem
81
+ Every AI app needs memory. Developers hack together solutions using vector databases, embeddings, and custom retrieval logic. It's complex, fragmented, and everyone rebuilds the same thing.
82
+
83
+ ### Current Solutions Suck
84
+ - **Mem0**: $24M raised, but self-hosting docs are trash, pricing jumps from $19 to $249
85
+ - **Zep**: Academic, complex to deploy
86
+ - **Letta**: Not production-ready
87
+ - **LangChain Memory**: Too basic, no persistence
88
+
89
+ ### Our Approach
90
+ - **Self-host in 5 minutes**: One Docker command, everything bundled
91
+ - **Fair pricing**: $0 → $29 → $99 (not $19 → $249)
92
+ - **Open source core**: MIT license, own your data
93
+ - **Actually works**: Built because we need it ourselves (Clawdbot)
94
+
95
+ ## Core Features
96
+
97
+ ### 1. Simple Memory Operations
98
+ - `store()` - Save memories with automatic extraction
99
+ - `recall()` - Semantic search with context
100
+ - `update()` - Intelligent merging
101
+ - `forget()` - GDPR-compliant deletion
102
+
103
+ ### 2. Entity Resolution (Our Killer Feature)
104
+ Knows that "Adam", "Adam Smith", "Mr. Smith", and "my husband" are the same person.
105
+
106
+ ### 3. Temporal Awareness
107
+ Memories have time context. TTL support. Historical queries.
108
+
109
+ ### 4. Hybrid Storage
110
+ Vector (semantic) + Graph (relationships) + Relational (metadata) in one system.
111
+
112
+ ### 5. Observability Dashboard
113
+ See what's stored, debug retrievals, visualize entity graphs.
114
+
115
+ ## Quick Start
116
+
117
+ ### Self-Hosted (Recommended)
118
+ ```bash
119
+ docker run -d -p 8787:8787 remembra/remembra
120
+ ```
121
+
122
+ ### Python SDK
123
+ ```bash
124
+ pip install remembra
125
+ ```
126
+
127
+ ```python
128
+ from remembra import Memory
129
+
130
+ # Connect to local instance
131
+ memory = Memory(
132
+ base_url="http://localhost:8787",
133
+ user_id="user_123",
134
+ project="my_app"
135
+ )
136
+
137
+ # Store
138
+ memory.store("User's name is John. He's a software engineer at Google.")
139
+
140
+ # Recall
141
+ context = memory.recall("Who is the user?")
142
+ print(context)
143
+ # "John is a software engineer at Google."
144
+ ```
145
+
146
+ ## Documentation
147
+
148
+ - [Product Spec](./PRODUCT-SPEC.md) - Full product specification
149
+ - [Build Plan](./BUILD-PLAN.md) - Week-by-week development plan
150
+ - [Architecture](./ARCHITECTURE.md) - Technical architecture details
151
+ - [API Reference](./API.md) - API documentation
152
+
153
+ ## Project Status
154
+
155
+ 🚧 **In Development** - MVP target: 12 weeks
156
+
157
+ ## License
158
+
159
+ MIT License - Use it however you want.
160
+
161
+ ---
162
+
163
+ Built by [DolphyTech](https://dolphytech.com)
@@ -0,0 +1,107 @@
1
+ # Remembra - AI Memory Layer
2
+
3
+ > Persistent memory for AI applications. Self-host in 5 minutes.
4
+
5
+ ## What Is This?
6
+
7
+ Remembra is a universal memory layer for LLMs. It solves the fundamental problem that every AI forgets everything between sessions.
8
+
9
+ ```python
10
+ from remembra import Memory
11
+
12
+ memory = Memory(user_id="user_123")
13
+
14
+ # Store memories
15
+ memory.store("User prefers dark mode and works at Acme Corp")
16
+
17
+ # Recall with context
18
+ context = memory.recall("What are user's preferences?")
19
+ # Returns: "User prefers dark mode. Works at Acme Corp."
20
+ ```
21
+
22
+ ## Why We're Building This
23
+
24
+ ### The Problem
25
+ Every AI app needs memory. Developers hack together solutions using vector databases, embeddings, and custom retrieval logic. It's complex, fragmented, and everyone rebuilds the same thing.
26
+
27
+ ### Current Solutions Suck
28
+ - **Mem0**: $24M raised, but self-hosting docs are trash, pricing jumps from $19 to $249
29
+ - **Zep**: Academic, complex to deploy
30
+ - **Letta**: Not production-ready
31
+ - **LangChain Memory**: Too basic, no persistence
32
+
33
+ ### Our Approach
34
+ - **Self-host in 5 minutes**: One Docker command, everything bundled
35
+ - **Fair pricing**: $0 → $29 → $99 (not $19 → $249)
36
+ - **Open source core**: MIT license, own your data
37
+ - **Actually works**: Built because we need it ourselves (Clawdbot)
38
+
39
+ ## Core Features
40
+
41
+ ### 1. Simple Memory Operations
42
+ - `store()` - Save memories with automatic extraction
43
+ - `recall()` - Semantic search with context
44
+ - `update()` - Intelligent merging
45
+ - `forget()` - GDPR-compliant deletion
46
+
47
+ ### 2. Entity Resolution (Our Killer Feature)
48
+ Knows that "Adam", "Adam Smith", "Mr. Smith", and "my husband" are the same person.
49
+
50
+ ### 3. Temporal Awareness
51
+ Memories have time context. TTL support. Historical queries.
52
+
53
+ ### 4. Hybrid Storage
54
+ Vector (semantic) + Graph (relationships) + Relational (metadata) in one system.
55
+
56
+ ### 5. Observability Dashboard
57
+ See what's stored, debug retrievals, visualize entity graphs.
58
+
59
+ ## Quick Start
60
+
61
+ ### Self-Hosted (Recommended)
62
+ ```bash
63
+ docker run -d -p 8787:8787 remembra/remembra
64
+ ```
65
+
66
+ ### Python SDK
67
+ ```bash
68
+ pip install remembra
69
+ ```
70
+
71
+ ```python
72
+ from remembra import Memory
73
+
74
+ # Connect to local instance
75
+ memory = Memory(
76
+ base_url="http://localhost:8787",
77
+ user_id="user_123",
78
+ project="my_app"
79
+ )
80
+
81
+ # Store
82
+ memory.store("User's name is John. He's a software engineer at Google.")
83
+
84
+ # Recall
85
+ context = memory.recall("Who is the user?")
86
+ print(context)
87
+ # "John is a software engineer at Google."
88
+ ```
89
+
90
+ ## Documentation
91
+
92
+ - [Product Spec](./PRODUCT-SPEC.md) - Full product specification
93
+ - [Build Plan](./BUILD-PLAN.md) - Week-by-week development plan
94
+ - [Architecture](./ARCHITECTURE.md) - Technical architecture details
95
+ - [API Reference](./API.md) - API documentation
96
+
97
+ ## Project Status
98
+
99
+ 🚧 **In Development** - MVP target: 12 weeks
100
+
101
+ ## License
102
+
103
+ MIT License - Use it however you want.
104
+
105
+ ---
106
+
107
+ Built by [DolphyTech](https://dolphytech.com)
@@ -0,0 +1,142 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "remembra"
7
+ version = "0.1.0"
8
+ description = "Universal memory layer for AI applications. Self-host in 5 minutes."
9
+ readme = "README.md"
10
+ license = { text = "MIT" }
11
+ requires-python = ">=3.11"
12
+ authors = [
13
+ { name = "DolphyTech", email = "admin@dolphytech.com" },
14
+ ]
15
+ maintainers = [
16
+ { name = "Damany Williams", email = "admin@dolphytech.com" },
17
+ ]
18
+ keywords = [
19
+ "ai",
20
+ "memory",
21
+ "llm",
22
+ "rag",
23
+ "vector-search",
24
+ "embeddings",
25
+ "chatbot",
26
+ "agent",
27
+ "langchain",
28
+ "openai",
29
+ ]
30
+ classifiers = [
31
+ "Development Status :: 3 - Alpha",
32
+ "Intended Audience :: Developers",
33
+ "License :: OSI Approved :: MIT License",
34
+ "Operating System :: OS Independent",
35
+ "Programming Language :: Python :: 3",
36
+ "Programming Language :: Python :: 3.11",
37
+ "Programming Language :: Python :: 3.12",
38
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
39
+ "Topic :: Software Development :: Libraries :: Python Modules",
40
+ "Typing :: Typed",
41
+ ]
42
+
43
+ # Core SDK only needs httpx
44
+ dependencies = [
45
+ "httpx>=0.27.0",
46
+ ]
47
+
48
+ [project.optional-dependencies]
49
+ # Full server dependencies
50
+ server = [
51
+ "fastapi>=0.115.0",
52
+ "uvicorn[standard]>=0.32.0",
53
+ "pydantic>=2.9.0",
54
+ "pydantic-settings>=2.6.0",
55
+ "qdrant-client>=1.12.0,<2.0.0",
56
+ "python-ulid>=3.0.0",
57
+ "structlog>=24.4.0",
58
+ "aiosqlite>=0.20.0",
59
+ "openai>=1.0.0",
60
+ ]
61
+
62
+ # Development dependencies
63
+ dev = [
64
+ "pytest>=8.3.0",
65
+ "pytest-asyncio>=0.24.0",
66
+ "pytest-cov>=6.0.0",
67
+ "ruff>=0.8.0",
68
+ "mypy>=1.13.0",
69
+ "build>=1.0.0",
70
+ "twine>=5.0.0",
71
+ ]
72
+
73
+ # All dependencies (SDK + Server)
74
+ all = [
75
+ "remembra[server]",
76
+ ]
77
+
78
+ [project.urls]
79
+ Homepage = "https://github.com/AskDolphy/remembra"
80
+ Documentation = "https://github.com/AskDolphy/remembra#readme"
81
+ Repository = "https://github.com/AskDolphy/remembra.git"
82
+ Issues = "https://github.com/AskDolphy/remembra/issues"
83
+ Changelog = "https://github.com/AskDolphy/remembra/blob/main/CHANGELOG.md"
84
+
85
+ [project.scripts]
86
+ remembra = "remembra.main:run"
87
+ remembra-server = "remembra.main:run"
88
+
89
+ # ---------------------------------------------------------------------------
90
+ # Hatch build config
91
+ # ---------------------------------------------------------------------------
92
+ [tool.hatch.build.targets.wheel]
93
+ packages = ["src/remembra"]
94
+
95
+ [tool.hatch.build.targets.sdist]
96
+ include = [
97
+ "/src",
98
+ "/tests",
99
+ "/README.md",
100
+ "/LICENSE",
101
+ "/pyproject.toml",
102
+ ]
103
+
104
+ # ---------------------------------------------------------------------------
105
+ # Ruff
106
+ # ---------------------------------------------------------------------------
107
+ [tool.ruff]
108
+ src = ["src"]
109
+ target-version = "py311"
110
+ line-length = 100
111
+
112
+ [tool.ruff.lint]
113
+ select = ["E", "F", "I", "UP", "B", "SIM", "ANN"]
114
+ ignore = ["ANN101", "ANN102", "ANN401"]
115
+
116
+ [tool.ruff.lint.isort]
117
+ known-first-party = ["remembra"]
118
+
119
+ # ---------------------------------------------------------------------------
120
+ # Mypy
121
+ # ---------------------------------------------------------------------------
122
+ [tool.mypy]
123
+ python_version = "3.11"
124
+ strict = true
125
+ files = ["src/remembra"]
126
+ plugins = ["pydantic.mypy"]
127
+
128
+ [[tool.mypy.overrides]]
129
+ module = ["qdrant_client.*", "structlog.*"]
130
+ ignore_missing_imports = true
131
+
132
+ # ---------------------------------------------------------------------------
133
+ # Pytest
134
+ # ---------------------------------------------------------------------------
135
+ [tool.pytest.ini_options]
136
+ asyncio_mode = "auto"
137
+ testpaths = ["tests"]
138
+ addopts = ["--cov=remembra", "--cov-report=term-missing", "--cov-report=xml"]
139
+
140
+ [tool.coverage.run]
141
+ source = ["src/remembra"]
142
+ omit = ["*/tests/*"]
@@ -0,0 +1,44 @@
1
+ """
2
+ Remembra – Universal memory layer for AI applications.
3
+
4
+ Quick Start:
5
+ from remembra import Memory
6
+
7
+ memory = Memory(
8
+ base_url="http://localhost:8787",
9
+ user_id="user_123"
10
+ )
11
+
12
+ # Store
13
+ memory.store("John works at Acme Corp as CTO")
14
+
15
+ # Recall
16
+ result = memory.recall("Where does John work?")
17
+ print(result.context) # "John works at Acme Corp as CTO."
18
+ """
19
+
20
+ __version__ = "0.1.0"
21
+
22
+ # SDK exports (client-side)
23
+ from remembra.client.memory import Memory, MemoryError
24
+ from remembra.client.types import (
25
+ EntityItem,
26
+ ForgetResult,
27
+ MemoryItem,
28
+ RecallResult,
29
+ StoreResult,
30
+ )
31
+
32
+ __all__ = [
33
+ # Core
34
+ "Memory",
35
+ "MemoryError",
36
+ # Types
37
+ "StoreResult",
38
+ "RecallResult",
39
+ "ForgetResult",
40
+ "MemoryItem",
41
+ "EntityItem",
42
+ # Metadata
43
+ "__version__",
44
+ ]
@@ -0,0 +1 @@
1
+ """API layer – versioned routers."""
@@ -0,0 +1,8 @@
1
+ """Aggregate all versioned routers."""
2
+
3
+ from fastapi import APIRouter
4
+
5
+ from remembra.api.v1 import memories
6
+
7
+ api_router = APIRouter(prefix="/api")
8
+ api_router.include_router(memories.router, prefix="/v1")
@@ -0,0 +1 @@
1
+ """API v1 routers."""