clearfront 2.7.0__tar.gz → 2.7.1__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.
- {clearfront-2.7.0 → clearfront-2.7.1}/PKG-INFO +5 -5
- {clearfront-2.7.0 → clearfront-2.7.1}/README.md +2 -2
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/mcp_server.py +6 -3
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/web/index.html +67 -32
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront.egg-info/PKG-INFO +5 -5
- {clearfront-2.7.0 → clearfront-2.7.1}/pyproject.toml +5 -4
- {clearfront-2.7.0 → clearfront-2.7.1}/LICENSE +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/__init__.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/agent.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/brightdata.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/cli.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/correlation.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/corroboration.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/effort.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/exceptions.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/extractors.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/json_output.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/multi_target.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/pdf_report.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/pivot.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/prompts.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/regexes.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/repl.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/serp.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/session_history.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/sponsors.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tool_cache.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/__init__.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/data/NOTICE +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/data/wmn-data-unique.json +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/exceptions.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/generate_dorks.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/scrape_url.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_abuseipdb.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_breach.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_censys.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_crt.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_crypto.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_dns.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_domain.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_dorks_live.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_email.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_emailrep.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_exif.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_exposure.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_footprint.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_github.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_gravatar.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_greynoise.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_harvester.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_hudsonrock.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_ip.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_ip2location.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_maigret.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_paste.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_phone.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_shodan.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_username.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_virustotal.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_wayback.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/search_whois.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/tools/whatsmyname.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/utils.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront/web_server.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront.egg-info/SOURCES.txt +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront.egg-info/dependency_links.txt +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront.egg-info/entry_points.txt +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront.egg-info/requires.txt +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/clearfront.egg-info/top_level.txt +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/setup.cfg +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_authorized_use.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_brightdata.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_cli_openai.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_cli_output.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_corroboration.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_crt.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_dns.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_effort.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_exif.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_footprint.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_github_code_search.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_graph_export.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_hudsonrock.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_json_export.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_mcp_authorized_use.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_openai_agent.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_pivot_freetier.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_regexes.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_repl_first_run.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_report_export.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_security.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_serp.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_tool_cache.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_tool_parity.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_tools.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_v2140.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_v240.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_wayback_greynoise.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_web_server.py +0 -0
- {clearfront-2.7.0 → clearfront-2.7.1}/tests/test_web_server_openai.py +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: clearfront
|
|
3
|
-
Version: 2.7.
|
|
4
|
-
Summary: AI-powered OSINT agent, MCP server, and CLI. Interactive REPL + 30 tools. Anthropic Claude or local Ollama. For authorized security research use only.
|
|
3
|
+
Version: 2.7.1
|
|
4
|
+
Summary: Clearfront OSINT: AI-powered OSINT agent, MCP server, and CLI that maps your digital footprint across 3,400+ public data sources. Interactive REPL + 30 tools. Anthropic Claude or local Ollama. For authorized security research use only.
|
|
5
5
|
Author: Scott Martin Anderson
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/scottmartinanderson/clearfront
|
|
8
8
|
Project-URL: Repository, https://github.com/scottmartinanderson/clearfront
|
|
9
9
|
Project-URL: Bug Tracker, https://github.com/scottmartinanderson/clearfront/issues
|
|
10
|
-
Keywords: osint,security,mcp,cli,ai,agent,anthropic,claude,investigation,recon,cybersecurity
|
|
10
|
+
Keywords: clearfront,clearfront-osint,osint,open-source-intelligence,digital-footprint,security,mcp,cli,ai,agent,anthropic,claude,investigation,recon,cybersecurity,privacy
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Intended Audience :: Information Technology
|
|
@@ -72,7 +72,7 @@ Dynamic: license-file
|
|
|
72
72
|
<div align="center">
|
|
73
73
|
<h1>Clearfront</h1>
|
|
74
74
|
<p><strong>Open-source AI intelligence on your digital footprint.</strong></p>
|
|
75
|
-
<p>
|
|
75
|
+
<p>Clearfront, also known as Clearfront OSINT, is a free and open-source OSINT agent. Give it an email, username, domain, IP, or name, and its AI security analyst scans 3,400+ public data sources in one sweep, then returns a calibrated report and an interactive evidence graph. Check your own exposure, or investigate an authorized target. It runs locally with your own API keys and sends nothing to us.</p>
|
|
76
76
|
<p>Interactive REPL · CLI · local web console · MCP server. Powered by Anthropic Claude, a local Ollama model, or any OpenAI-compatible endpoint.</p>
|
|
77
77
|
</div>
|
|
78
78
|
|
|
@@ -226,7 +226,7 @@ clearfront web
|
|
|
226
226
|
|
|
227
227
|
Browser-based AI chat with streaming tool output, inline result cards, and a light/dark theme toggle. Supports fully local inference via Ollama or any OpenAI-compatible endpoint (no Anthropic API key required when using a local backend).
|
|
228
228
|
|
|
229
|
-
The console runs entirely on your machine and binds to `127.0.0.1` by default. Choose your backend and paste your own key in Settings; your keys and the targets you investigate never touch our servers. Screenshots are in [`media
|
|
229
|
+
The console runs entirely on your machine and binds to `127.0.0.1` by default. Choose your backend and paste your own key in Settings; your keys and the targets you investigate never touch our servers. Screenshots are in [`media/`](media/).
|
|
230
230
|
|
|
231
231
|
### MCP Server
|
|
232
232
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<h1>Clearfront</h1>
|
|
3
3
|
<p><strong>Open-source AI intelligence on your digital footprint.</strong></p>
|
|
4
|
-
<p>
|
|
4
|
+
<p>Clearfront, also known as Clearfront OSINT, is a free and open-source OSINT agent. Give it an email, username, domain, IP, or name, and its AI security analyst scans 3,400+ public data sources in one sweep, then returns a calibrated report and an interactive evidence graph. Check your own exposure, or investigate an authorized target. It runs locally with your own API keys and sends nothing to us.</p>
|
|
5
5
|
<p>Interactive REPL · CLI · local web console · MCP server. Powered by Anthropic Claude, a local Ollama model, or any OpenAI-compatible endpoint.</p>
|
|
6
6
|
</div>
|
|
7
7
|
|
|
@@ -155,7 +155,7 @@ clearfront web
|
|
|
155
155
|
|
|
156
156
|
Browser-based AI chat with streaming tool output, inline result cards, and a light/dark theme toggle. Supports fully local inference via Ollama or any OpenAI-compatible endpoint (no Anthropic API key required when using a local backend).
|
|
157
157
|
|
|
158
|
-
The console runs entirely on your machine and binds to `127.0.0.1` by default. Choose your backend and paste your own key in Settings; your keys and the targets you investigate never touch our servers. Screenshots are in [`media
|
|
158
|
+
The console runs entirely on your machine and binds to `127.0.0.1` by default. Choose your backend and paste your own key in Settings; your keys and the targets you investigate never touch our servers. Screenshots are in [`media/`](media/).
|
|
159
159
|
|
|
160
160
|
### MCP Server
|
|
161
161
|
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# clearfront/mcp_server.py
|
|
2
2
|
"""
|
|
3
|
-
Clearfront MCP Server, v2.7.
|
|
3
|
+
Clearfront OSINT MCP Server, v2.7.1
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
Clearfront (Clearfront OSINT) is an open-source AI OSINT agent that maps a
|
|
6
|
+
digital footprint across 3,400+ public data sources and returns a calibrated
|
|
7
|
+
intelligence report. This server exposes all 30 OSINT tool capabilities plus
|
|
8
|
+
multi-target investigation to MCP-compliant AI clients over standard I/O.
|
|
9
|
+
Tools include:
|
|
7
10
|
search_email, search_username, search_maigret, search_breach, search_whois,
|
|
8
11
|
search_ip, search_domain, generate_dorks, search_paste, search_phone,
|
|
9
12
|
search_shodan, search_virustotal, search_censys, search_ip2location,
|
|
@@ -15,17 +15,20 @@
|
|
|
15
15
|
/* Swappable mono typeface (one line to A/B): JetBrains Mono | IBM Plex Mono */
|
|
16
16
|
:root { --font-mono: 'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace; }
|
|
17
17
|
|
|
18
|
-
/* DARK,
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
/* DARK, pure-black institutional console in Vercel-neutral greys (Geist
|
|
19
|
+
dark scale: text = gray-1000/900/800, border = gray-400). --bg and
|
|
20
|
+
--surface are BOTH true #000 on purpose: any two adjacent near-blacks
|
|
21
|
+
band visibly in compressed or screen-recorded footage, so panels are
|
|
22
|
+
delineated by borders alone — do not reintroduce surface elevation
|
|
23
|
+
here. The warm Dossier undertone lives in the light theme only. */
|
|
21
24
|
:root {
|
|
22
|
-
--bg: #
|
|
23
|
-
--surface: #
|
|
24
|
-
--surface-dark: #
|
|
25
|
-
--border: #
|
|
26
|
-
--text-primary: #
|
|
27
|
-
--text-secondary: #
|
|
28
|
-
--text-muted: #
|
|
25
|
+
--bg: #000000;
|
|
26
|
+
--surface: #000000;
|
|
27
|
+
--surface-dark: #0a0a0a;
|
|
28
|
+
--border: #2e2e2e;
|
|
29
|
+
--text-primary: #ededed;
|
|
30
|
+
--text-secondary: #a1a1a1;
|
|
31
|
+
--text-muted: #7d7d7d; /* clears WCAG AA (~5.2:1 on black) */
|
|
29
32
|
/* semantic accents, used ONLY to encode data severity, never for chrome */
|
|
30
33
|
--accent: #3fb950; /* OK / clean / confirmed (green) */
|
|
31
34
|
--yellow: #d29922; /* WATCH / caution (amber) */
|
|
@@ -68,7 +71,7 @@
|
|
|
68
71
|
/* Hover variants */
|
|
69
72
|
.hover\:text-primary:hover { color: var(--text-primary); }
|
|
70
73
|
.hover\:text-secondary:hover { color: var(--text-secondary); }
|
|
71
|
-
.hover\:bg-surface:hover { background-color: var(--
|
|
74
|
+
.hover\:bg-surface:hover { background-color: color-mix(in srgb, var(--text-primary) 6%, transparent); } /* surface == bg in dark; a flat fill would be invisible */
|
|
72
75
|
.hover\:bg-border-50:hover { background-color: color-mix(in srgb, var(--border) 50%, transparent); }
|
|
73
76
|
.hover\:bg-accent-80:hover { background-color: color-mix(in srgb, var(--text-primary) 78%, var(--bg)); }
|
|
74
77
|
.hover\:border-accent-40:hover { border-color: color-mix(in srgb, var(--accent) 40%, transparent); }
|
|
@@ -147,18 +150,50 @@
|
|
|
147
150
|
textarea { font-family:inherit; }
|
|
148
151
|
textarea:focus { outline:none; }
|
|
149
152
|
|
|
150
|
-
/* hero wordmark, fluid ANSI
|
|
151
|
-
|
|
153
|
+
/* hero wordmark, fluid ANSI down to 448px viewports (scales to its column,
|
|
154
|
+
never clips; the low cutoff keeps the art alive in narrow 9:16 capture
|
|
155
|
+
windows), compact legible lockup below that. Display is swapped here in
|
|
156
|
+
plain CSS: the Play CDN does not compile arbitrary breakpoint variants
|
|
157
|
+
like min-[28rem]:block, so utility classes cannot express this cutoff. */
|
|
152
158
|
.hero { container-type: inline-size; }
|
|
153
159
|
.hero-ascii {
|
|
160
|
+
display: block;
|
|
154
161
|
font-size: clamp(6px, 1.7cqi, 11px);
|
|
155
162
|
line-height: 1.4; letter-spacing: 0; white-space: pre;
|
|
156
163
|
transform: skewX(-9deg); transform-origin: bottom left;
|
|
157
164
|
}
|
|
158
165
|
.hero-lockup {
|
|
166
|
+
display: none;
|
|
159
167
|
font-size: clamp(26px, 12vw, 38px); font-weight: 700; letter-spacing: 0.14em;
|
|
160
168
|
line-height: 1.1; transform: skewX(-9deg); transform-origin: bottom left;
|
|
161
169
|
}
|
|
170
|
+
.hero-lockup-sub { display: none; }
|
|
171
|
+
@media (max-width: 447.98px) {
|
|
172
|
+
.hero-ascii { display: none; }
|
|
173
|
+
.hero-lockup { display: block; }
|
|
174
|
+
.hero-lockup-sub { display: flex; }
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* narrow-header tiers below the sm breakpoint: keep the effort chip (and,
|
|
178
|
+
once it fits, the model chip) alive in 9:16 capture windows. Same plain
|
|
179
|
+
CSS + 448px floor as the hero above; between 448px and sm the version
|
|
180
|
+
text and the leak-test icon yield the room. */
|
|
181
|
+
.hdr-effort, .hdr-divider, .hdr-divider-2, .hdr-model { display: none; }
|
|
182
|
+
.hdr-wifi { display: flex; } /* display owned here, not by the .flex utility, so the band rule below can hide it */
|
|
183
|
+
@media (min-width: 448px) {
|
|
184
|
+
.hdr-effort, .hdr-divider { display: block; }
|
|
185
|
+
}
|
|
186
|
+
@media (min-width: 520px) {
|
|
187
|
+
.hdr-model { display: flex; }
|
|
188
|
+
.hdr-divider-2 { display: block; }
|
|
189
|
+
}
|
|
190
|
+
@media (min-width: 448px) and (max-width: 639.98px) {
|
|
191
|
+
.hdr-version, .hdr-wifi { display: none; }
|
|
192
|
+
}
|
|
193
|
+
/* home-list row descriptions: same idea, 480px floor (the longest
|
|
194
|
+
title + description pair fits the column from there up). */
|
|
195
|
+
.row-desc { display: none; }
|
|
196
|
+
@media (min-width: 480px) { .row-desc { display: block; } }
|
|
162
197
|
|
|
163
198
|
/* keyboard focus, visible ring in both themes (overrides focus:outline-none) */
|
|
164
199
|
:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 2px; border-radius: 3px; }
|
|
@@ -507,7 +542,7 @@
|
|
|
507
542
|
<!-- wordmark: lowercase IBM Plex Mono regular, version as muted baseline metadata -->
|
|
508
543
|
<div class="flex items-baseline flex-none gap-2">
|
|
509
544
|
<span class="text-sm" style="font-family:'IBM Plex Mono',ui-monospace,monospace;font-weight:400;">clearfront</span>
|
|
510
|
-
<span class="text-muted" style="font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;letter-spacing:0.02em;font-variant-numeric:tabular-nums;">v<span x-text="version"></span></span>
|
|
545
|
+
<span class="hdr-version text-muted" style="font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;letter-spacing:0.02em;font-variant-numeric:tabular-nums;">v<span x-text="version"></span></span>
|
|
511
546
|
</div>
|
|
512
547
|
|
|
513
548
|
<div class="flex-1"></div>
|
|
@@ -515,7 +550,7 @@
|
|
|
515
550
|
<!-- right: backend status readout + controls -->
|
|
516
551
|
<div class="flex items-center gap-1.5 flex-none">
|
|
517
552
|
<!-- effort selector: no-noun chip, opens a level menu whose footer explains the cost -->
|
|
518
|
-
<div class="relative
|
|
553
|
+
<div class="hdr-effort relative" @keydown.escape.window="depthOpen = false">
|
|
519
554
|
<button @click="depthOpen = !depthOpen"
|
|
520
555
|
:aria-expanded="depthOpen"
|
|
521
556
|
aria-haspopup="true"
|
|
@@ -549,11 +584,11 @@
|
|
|
549
584
|
style="font-size:12px;line-height:1.42;" x-text="depthExplained().desc"></div>
|
|
550
585
|
</div>
|
|
551
586
|
</div>
|
|
552
|
-
<div class="
|
|
587
|
+
<div class="hdr-divider w-px h-5 bg-border mx-0.5"></div>
|
|
553
588
|
<!-- backend status readout -->
|
|
554
589
|
<button @click="showSettings = true"
|
|
555
590
|
:title="aiBackend === 'none' ? 'No AI backend configured, click to set up' : 'AI backend, click to change'"
|
|
556
|
-
class="
|
|
591
|
+
class="hdr-model items-center gap-2 font-mono text-xs px-2.5 py-1 rounded border border-app text-secondary bg-transparent hover:text-primary hover:border-strong transition-colors cursor-pointer whitespace-nowrap">
|
|
557
592
|
<span class="w-1.5 h-1.5 rounded-full flex-none"
|
|
558
593
|
:style="aiBackend === 'none' ? 'background-color:var(--red)' : 'background-color:var(--accent)'"></span>
|
|
559
594
|
<span x-show="aiBackend !== 'none' && settings.chatModel === 'claude'" x-text="claudeModelLabel"></span>
|
|
@@ -561,11 +596,11 @@
|
|
|
561
596
|
<span x-show="aiBackend !== 'none' && settings.chatModel === 'openai'">OpenAI <span x-text="settings.openaiModel || 'model'"></span></span>
|
|
562
597
|
<span x-show="aiBackend === 'none'">Not configured</span>
|
|
563
598
|
</button>
|
|
564
|
-
<div class="
|
|
599
|
+
<div class="hdr-divider-2 w-px h-5 bg-border mx-0.5"></div>
|
|
565
600
|
<button @click="openLeakTest()"
|
|
566
601
|
aria-label="IP leak test"
|
|
567
602
|
title="Browser IP leak test (WebRTC / IPv6 / DNS)"
|
|
568
|
-
class="w-8 h-8
|
|
603
|
+
class="hdr-wifi w-8 h-8 items-center justify-center rounded-md text-muted hover:text-primary hover:bg-surface transition-colors">
|
|
569
604
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
570
605
|
<path d="M5 12.55a11 11 0 0 1 14.08 0"/>
|
|
571
606
|
<path d="M1.42 9a16 16 0 0 1 21.16 0"/>
|
|
@@ -625,7 +660,7 @@
|
|
|
625
660
|
<div x-show="messages.length === 0"
|
|
626
661
|
class="flex-1 flex flex-col justify-center py-16">
|
|
627
662
|
<div class="hero mb-8 cf-hidden" :class="revealHero && (bootAnim ? 'cf-hero-in' : 'cf-shown')">
|
|
628
|
-
<!--HERO_START--><pre class="hero-ascii font-mono text-
|
|
663
|
+
<!--HERO_START--><pre class="hero-ascii font-mono text-primary select-none" aria-label="CLEARFRONT"> ██████╗██╗ ███████╗ █████╗ ██████╗ ███████╗██████╗ ██████╗ ███╗ ██╗████████╗
|
|
629
664
|
██╔════╝██║ ██╔════╝██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔═══██╗████╗ ██║╚══██╔══╝
|
|
630
665
|
██║ ██║ █████╗ ███████║██████╔╝█████╗ ██████╔╝██║ ██║██╔██╗ ██║ ██║
|
|
631
666
|
██║ ██║ ██╔══╝ ██╔══██║██╔══██╗██╔══╝ ██╔══██╗██║ ██║██║╚██╗██║ ██║
|
|
@@ -634,8 +669,8 @@
|
|
|
634
669
|
|
|
635
670
|
────────────────────────────────────────────────────────────────────────────────────
|
|
636
671
|
OPEN-SOURCE INTELLIGENCE AUTHORIZED USE · v<span x-text="version"></span></pre><!--HERO_END-->
|
|
637
|
-
<div class="hero-lockup font-mono text-primary select-none
|
|
638
|
-
<div class="border-t border-app mt-4 pt-2
|
|
672
|
+
<div class="hero-lockup font-mono text-primary select-none" aria-label="CLEARFRONT">CLEARFRONT</div>
|
|
673
|
+
<div class="hero-lockup-sub border-t border-app mt-4 pt-2 items-center justify-between font-mono text-secondary gap-3" style="font-size:10px;letter-spacing:0.05em;">
|
|
639
674
|
<span>OPEN-SOURCE INTELLIGENCE</span>
|
|
640
675
|
<span class="text-muted whitespace-nowrap">AUTHORIZED USE</span>
|
|
641
676
|
</div>
|
|
@@ -654,7 +689,7 @@ OPEN-SOURCE INTELLIGENCE AUTHORIZED USE · v
|
|
|
654
689
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="flex-none opacity-60" x-html="s.svgIcon"></svg>
|
|
655
690
|
<span class="font-mono truncate" style="font-size:13px;" x-text="s.title"></span>
|
|
656
691
|
<span class="ml-auto flex items-center gap-2.5 flex-none">
|
|
657
|
-
<span class="
|
|
692
|
+
<span class="row-desc font-mono text-muted" style="font-size:11px;" x-text="s.desc"></span>
|
|
658
693
|
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="flex-none opacity-30"><polyline points="9 18 15 12 9 6"/></svg>
|
|
659
694
|
</span>
|
|
660
695
|
</button>
|
|
@@ -674,7 +709,7 @@ OPEN-SOURCE INTELLIGENCE AUTHORIZED USE · v
|
|
|
674
709
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="flex-none opacity-60" x-html="s.svgIcon"></svg>
|
|
675
710
|
<span class="font-mono truncate" style="font-size:13px;" x-text="s.title"></span>
|
|
676
711
|
<span class="ml-auto flex items-center gap-2.5 flex-none">
|
|
677
|
-
<span class="
|
|
712
|
+
<span class="row-desc font-mono text-muted" style="font-size:11px;" x-text="s.desc"></span>
|
|
678
713
|
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="flex-none opacity-30"><polyline points="9 18 15 12 9 6"/></svg>
|
|
679
714
|
</span>
|
|
680
715
|
</button>
|
|
@@ -1534,14 +1569,14 @@ document.addEventListener('alpine:init', () => {
|
|
|
1534
1569
|
const light = document.documentElement.classList.contains('light');
|
|
1535
1570
|
return {
|
|
1536
1571
|
light,
|
|
1537
|
-
bg: v('--bg', light ? '#f5f4f1' : '#
|
|
1538
|
-
node: v('--text-muted', light ? '#696d75' : '#
|
|
1539
|
-
subj: v('--text-secondary', light ? '#5f636b' : '#
|
|
1540
|
-
hi: v('--text-primary', light ? '#1a1b1e' : '#
|
|
1541
|
-
part: v('--text-primary', light ? '#1a1b1e' : '#
|
|
1542
|
-
link: light ? 'rgba(72,76,84,0.42)' : 'rgba(
|
|
1543
|
-
linkhi: v('--text-primary', light ? '#1a1b1e' : '#
|
|
1544
|
-
txt: light ? 'rgba(60,64,72,0.85)' : 'rgba(
|
|
1572
|
+
bg: v('--bg', light ? '#f5f4f1' : '#000000'),
|
|
1573
|
+
node: v('--text-muted', light ? '#696d75' : '#7d7d7d'), // uniform node colour at rest
|
|
1574
|
+
subj: v('--text-secondary', light ? '#5f636b' : '#a1a1a1'),// subject: a touch brighter
|
|
1575
|
+
hi: v('--text-primary', light ? '#1a1b1e' : '#ededed'), // highlight "accent" (mono pop)
|
|
1576
|
+
part: v('--text-primary', light ? '#1a1b1e' : '#ededed'), // travelling particle colour
|
|
1577
|
+
link: light ? 'rgba(72,76,84,0.42)' : 'rgba(143,143,143,0.34)', // resting links: a touch darker (light) / brighter (dark) so they read on the mono bg
|
|
1578
|
+
linkhi: v('--text-primary', light ? '#1a1b1e' : '#ededed'),
|
|
1579
|
+
txt: light ? 'rgba(60,64,72,0.85)' : 'rgba(210,210,210,0.82)',
|
|
1545
1580
|
};
|
|
1546
1581
|
},
|
|
1547
1582
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: clearfront
|
|
3
|
-
Version: 2.7.
|
|
4
|
-
Summary: AI-powered OSINT agent, MCP server, and CLI. Interactive REPL + 30 tools. Anthropic Claude or local Ollama. For authorized security research use only.
|
|
3
|
+
Version: 2.7.1
|
|
4
|
+
Summary: Clearfront OSINT: AI-powered OSINT agent, MCP server, and CLI that maps your digital footprint across 3,400+ public data sources. Interactive REPL + 30 tools. Anthropic Claude or local Ollama. For authorized security research use only.
|
|
5
5
|
Author: Scott Martin Anderson
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/scottmartinanderson/clearfront
|
|
8
8
|
Project-URL: Repository, https://github.com/scottmartinanderson/clearfront
|
|
9
9
|
Project-URL: Bug Tracker, https://github.com/scottmartinanderson/clearfront/issues
|
|
10
|
-
Keywords: osint,security,mcp,cli,ai,agent,anthropic,claude,investigation,recon,cybersecurity
|
|
10
|
+
Keywords: clearfront,clearfront-osint,osint,open-source-intelligence,digital-footprint,security,mcp,cli,ai,agent,anthropic,claude,investigation,recon,cybersecurity,privacy
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Intended Audience :: Information Technology
|
|
@@ -72,7 +72,7 @@ Dynamic: license-file
|
|
|
72
72
|
<div align="center">
|
|
73
73
|
<h1>Clearfront</h1>
|
|
74
74
|
<p><strong>Open-source AI intelligence on your digital footprint.</strong></p>
|
|
75
|
-
<p>
|
|
75
|
+
<p>Clearfront, also known as Clearfront OSINT, is a free and open-source OSINT agent. Give it an email, username, domain, IP, or name, and its AI security analyst scans 3,400+ public data sources in one sweep, then returns a calibrated report and an interactive evidence graph. Check your own exposure, or investigate an authorized target. It runs locally with your own API keys and sends nothing to us.</p>
|
|
76
76
|
<p>Interactive REPL · CLI · local web console · MCP server. Powered by Anthropic Claude, a local Ollama model, or any OpenAI-compatible endpoint.</p>
|
|
77
77
|
</div>
|
|
78
78
|
|
|
@@ -226,7 +226,7 @@ clearfront web
|
|
|
226
226
|
|
|
227
227
|
Browser-based AI chat with streaming tool output, inline result cards, and a light/dark theme toggle. Supports fully local inference via Ollama or any OpenAI-compatible endpoint (no Anthropic API key required when using a local backend).
|
|
228
228
|
|
|
229
|
-
The console runs entirely on your machine and binds to `127.0.0.1` by default. Choose your backend and paste your own key in Settings; your keys and the targets you investigate never touch our servers. Screenshots are in [`media
|
|
229
|
+
The console runs entirely on your machine and binds to `127.0.0.1` by default. Choose your backend and paste your own key in Settings; your keys and the targets you investigate never touch our servers. Screenshots are in [`media/`](media/).
|
|
230
230
|
|
|
231
231
|
### MCP Server
|
|
232
232
|
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "clearfront"
|
|
7
|
-
version = "2.7.
|
|
8
|
-
description = "AI-powered OSINT agent, MCP server, and CLI. Interactive REPL + 30 tools. Anthropic Claude or local Ollama. For authorized security research use only."
|
|
7
|
+
version = "2.7.1"
|
|
8
|
+
description = "Clearfront OSINT: AI-powered OSINT agent, MCP server, and CLI that maps your digital footprint across 3,400+ public data sources. Interactive REPL + 30 tools. Anthropic Claude or local Ollama. For authorized security research use only."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
11
11
|
license = "MIT"
|
|
@@ -13,8 +13,9 @@ authors = [
|
|
|
13
13
|
{name = "Scott Martin Anderson"}
|
|
14
14
|
]
|
|
15
15
|
keywords = [
|
|
16
|
-
"
|
|
17
|
-
"
|
|
16
|
+
"clearfront", "clearfront-osint", "osint", "open-source-intelligence",
|
|
17
|
+
"digital-footprint", "security", "mcp", "cli", "ai", "agent",
|
|
18
|
+
"anthropic", "claude", "investigation", "recon", "cybersecurity", "privacy"
|
|
18
19
|
]
|
|
19
20
|
classifiers = [
|
|
20
21
|
"Development Status :: 5 - Production/Stable",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|