-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathpyproject.toml
More file actions
105 lines (98 loc) · 4.5 KB
/
Copy pathpyproject.toml
File metadata and controls
105 lines (98 loc) · 4.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[project]
name = "compartment"
version = "4.5.0"
description = "Compartment - high-security, fully offline, encrypted vector memory for AI agents (MCP)"
readme = "README.md"
license = { text = "Apache-2.0" }
requires-python = ">=3.11"
keywords = ["mcp", "model-context-protocol", "memory", "agent-memory",
"vector-database", "semantic-search", "encryption", "offline",
"local-first", "claude", "claude-code", "privacy", "rag"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Environment :: Console",
"Environment :: MacOS X",
"Operating System :: OS Independent",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Security :: Cryptography",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Database :: Database Engines/Servers",
"Typing :: Typed",
]
dependencies = [
"pynacl>=1.5",
"argon2-cffi>=23.1",
"onnxruntime>=1.17",
"tokenizers>=0.15",
"numpy>=1.26",
# Ceiling, not caution. mcp 2.0 (2026-07-28) removed mcp.server.fastmcp,
# which server.py imports, so an unbounded `mcp>=1.0` resolves to a
# release where `compartment serve` raises at import and the MCP server
# never starts. Lifting this means porting to mcp.server.mcpserver first.
"mcp>=1.0,<2",
# The app ships with every install. It is not an add-on: unlocking,
# locking and changing the passphrase are things people do through a
# panel, not through a terminal, so an install that only lays down a CLI
# is an incomplete install. The markers keep it honest - nothing
# macOS-only is fetched on Windows and nothing Windows-only on macOS.
# Linux needs neither: its panel is Tk, which is in the standard library,
# so nothing here is fetched and nothing is compiled there.
"pyobjc-framework-Cocoa>=10.0; sys_platform == 'darwin'",
"pystray>=0.19; sys_platform == 'win32'",
"pillow>=10; sys_platform == 'win32'",
]
# PyPI is the repo's declared homepage, so it is a real front door - and
# without these it is a dead end: no Source link, no Issues link, nothing
# carrying a reader back to GitHub. Directories that scrape PyPI were
# producing a listing with no repository link at all.
[project.urls]
Homepage = "https://github.com/MaxFreedomPollard/Compartment"
Source = "https://github.com/MaxFreedomPollard/Compartment"
Issues = "https://github.com/MaxFreedomPollard/Compartment/issues"
Changelog = "https://github.com/MaxFreedomPollard/Compartment/releases"
Documentation = "https://github.com/MaxFreedomPollard/Compartment#readme"
Security = "https://github.com/MaxFreedomPollard/Compartment/blob/main/SECURITY.md"
[project.scripts]
compartment = "compartment.cli:main"
cmpt = "compartment.cli:main"
# Compartment was engRAM until 1.15.1, and `engram` is the command sitting in
# every existing MCP client config, shell alias and Hermes setup. Keeping it
# means the rename costs nobody a broken agent.
engram = "compartment.cli:main"
[project.optional-dependencies]
# usearch (SIMD HNSW) is only needed ABOVE 20k records; below that Compartment
# uses an exact brute-force index. Keeping it optional means the default
# `pip install` compiles nothing and installs cleanly everywhere; large
# corpora add it with `pip install compartment[hnsw]`.
hnsw = ["usearch>=2.9"]
# The status bar app is part of the base install now, so these two are kept
# only so that an existing `pip install compartment[menubar]` or
# `compartment[tray]` in someone's notes or script keeps resolving instead of
# failing on an unknown extra. They add nothing.
menubar = []
tray = []
dev = ["pytest>=8", "usearch>=2.9"]
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
compartment = ["models/**/*", "data/**/*"]
# Running the suite must cost the machine it runs on nothing. A test marked
# real_launchctl talks to the live launchd of whoever started pytest, so it
# is deselected by default and asked for by name:
# pytest -m real_launchctl
[tool.pytest.ini_options]
markers = [
"real_launchctl: talks to the real launchd; opt in with -m real_launchctl",
]
addopts = "-m 'not real_launchctl'"