lainux 0.1.0__py3-none-any.whl

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,76 @@
1
+ Metadata-Version: 2.4
2
+ Name: lainux
3
+ Version: 0.1.0
4
+ Summary: LAInux -- Linux, built for AI agents. Trust enforcement at the OS level.
5
+ Home-page: https://lainux.co.uk
6
+ Author: Raza Sharif
7
+ Author-email: contact@agentsign.dev
8
+ License: BUSL-1.1
9
+ Project-URL: Homepage, https://lainux.co.uk
10
+ Project-URL: Source, https://github.com/razashariff/agentlinux
11
+ Project-URL: Company, https://cybersecai.co.uk
12
+ Keywords: lainux ai agents security trust os linux mcp agentsign cybersecai
13
+ Classifier: Development Status :: 2 - Pre-Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Topic :: Security
16
+ Classifier: Topic :: System :: Operating System
17
+ Classifier: Programming Language :: Python :: 3
18
+ Requires-Python: >=3.8
19
+ Description-Content-Type: text/markdown
20
+ Dynamic: author
21
+ Dynamic: author-email
22
+ Dynamic: classifier
23
+ Dynamic: description
24
+ Dynamic: description-content-type
25
+ Dynamic: home-page
26
+ Dynamic: keywords
27
+ Dynamic: license
28
+ Dynamic: project-url
29
+ Dynamic: requires-python
30
+ Dynamic: summary
31
+
32
+ # LAInux
33
+
34
+ **Linux, built for AI agents.**
35
+
36
+ Trust enforcement at the OS level. Not as a library. Not as middleware. As the operating system itself.
37
+
38
+ - Auto identity -- every agent gets a key pair at process creation
39
+ - Per-operation signing -- every outbound request is signed
40
+ - Trust-gated networking -- untrusted destinations are blocked
41
+ - Data integrity -- model files and RAG documents verified at read time
42
+ - Tamper-evident audit -- hash-chained log of every operation
43
+
44
+ The OS is coming. The components are live today.
45
+
46
+ ## Install
47
+
48
+ ```bash
49
+ pip install lainux
50
+ ```
51
+
52
+ ## Usage
53
+
54
+ ```bash
55
+ # Fetch a URL
56
+ lainux https://example.com
57
+
58
+ # Check trust level of an MCP server
59
+ lainux --trust stripe-mcps
60
+ ```
61
+
62
+ ## Components (live now)
63
+
64
+ - [mcp-secure](https://www.npmjs.com/package/mcp-secure) -- per-message ECDSA signing
65
+ - [agentsign](https://www.npmjs.com/package/agentsign) -- cryptographic agent identity
66
+ - [model-secure](https://www.npmjs.com/package/model-secure) -- AI model file signing
67
+ - [AgenticSearch](https://agentsearch.cybersecai.co.uk) -- trust-scored search engine
68
+
69
+ ## Links
70
+
71
+ - **Website**: [lainux.co.uk](https://lainux.co.uk)
72
+ - **IETF**: [draft-sharif-mcps-secure-mcp](https://datatracker.ietf.org/doc/draft-sharif-mcps-secure-mcp/)
73
+ - **OWASP**: [MCP Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/MCP_Security_Cheat_Sheet.html)
74
+
75
+ Patent pending. (c) CyberSecAI Ltd.
76
+ contact@agentsign.dev | [cybersecai.co.uk](https://cybersecai.co.uk)
@@ -0,0 +1,6 @@
1
+ lainux.py,sha256=gVvWhmFOyLSIpmk5_LL_H_08S0dzpAVfD7QCgEJZbUE,2349
2
+ lainux-0.1.0.dist-info/METADATA,sha256=Fn5EBHKV-Je7c0FOxznIAiBk0kTv4OyRWzUs28VKgHY,2441
3
+ lainux-0.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
4
+ lainux-0.1.0.dist-info/entry_points.txt,sha256=unbmvocAxnx9UuxxeU8LLdJ0fl3Zd0HUSQ1vpu3_PtE,39
5
+ lainux-0.1.0.dist-info/top_level.txt,sha256=Xj6nJQFMxwlhDZN_iETylkFYKijCacFdQJlLmKmVgC4,7
6
+ lainux-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ lainux = lainux:main
@@ -0,0 +1 @@
1
+ lainux
lainux.py ADDED
@@ -0,0 +1,73 @@
1
+ """LAInux -- Linux, built for AI agents. Trust enforcement at the OS level."""
2
+
3
+ import sys
4
+ import json
5
+ import urllib.request
6
+
7
+ BANNER = r"""
8
+ _ _ ___
9
+ | | / \ |_ _|_ __ _ ___ __
10
+ | | / _ \ | || '_ \| | | \ \/ /
11
+ | |___/ ___ \ | || | | | |_| |> <
12
+ |_____/_/ \_\___|_| |_|\__,_/_/\_\
13
+
14
+ Linux, built for AI agents.
15
+ Trust enforcement at the OS level.
16
+
17
+ (c) CyberSecAI Ltd. Patent pending.
18
+ https://lainux.co.uk
19
+ contact@agentsign.dev
20
+ """
21
+
22
+ def fetch(url, timeout=5):
23
+ req = urllib.request.Request(url, headers={'User-Agent': 'LAInux/0.1'})
24
+ with urllib.request.urlopen(req, timeout=timeout) as r:
25
+ return r.status, r.read().decode('utf-8', errors='replace')
26
+
27
+ def main():
28
+ print(BANNER)
29
+
30
+ args = sys.argv[1:]
31
+
32
+ if not args or args[0] in ('--help', '-h'):
33
+ print(' Usage: lainux <url>')
34
+ print(' lainux --trust <mcp-server-name>')
35
+ print(' lainux --version\n')
36
+ print(' Examples:')
37
+ print(' lainux https://example.com')
38
+ print(' lainux --trust stripe-mcps\n')
39
+ return
40
+
41
+ if args[0] in ('--version', '-v'):
42
+ print(' LAInux 0.1.0')
43
+ print(' The OS is coming. The components are live.\n')
44
+ return
45
+
46
+ if args[0] == '--trust':
47
+ if len(args) < 2:
48
+ print(' Usage: lainux --trust <mcp-server-name>\n')
49
+ return
50
+ target = args[1]
51
+ print(f' Checking trust for: {target}')
52
+ try:
53
+ status, body = fetch(f'https://agentsearch.cybersecai.co.uk/api/warnings?sourceId={urllib.request.quote(target)}')
54
+ data = json.loads(body)
55
+ print(f' Trust Level: {data.get("trustLevel", "UNKNOWN")}')
56
+ print(f' Trust Score: {data.get("trustScore", 0)}/100')
57
+ print(f' Warnings: {len(data.get("warnings", []))}')
58
+ print(f' Has Warnings: {data.get("hasWarnings", False)}\n')
59
+ except Exception as e:
60
+ print(f' Error: {e}\n')
61
+ return
62
+
63
+ url = args[0] if args[0].startswith('http') else 'https://' + args[0]
64
+ print(f' GET {url}\n')
65
+ try:
66
+ status, body = fetch(url)
67
+ print(f' Status: {status}')
68
+ print(f' Body: {body[:500]}{"..." if len(body) > 500 else ""}\n')
69
+ except Exception as e:
70
+ print(f' Error: {e}\n')
71
+
72
+ if __name__ == '__main__':
73
+ main()